Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Многопотоковость в php и MySQL

14K
05 июня 2006 года
davvah
14 / / 05.06.2006
Вот такая задача.
Мне нужно отправить запрос к двум базам (mysql) bd1 и db2.
Мне известно что срипт пхп выполняется по очереди тоесть сначала получим результаты от db1 а потом результаты db2.
Можно ли не дожидаясь результатов db1 отправить запрос к db2.
Короче нужно запросить одновременно к двум базам в одном скрипте.
Прошу помогите, если даже это не возможно то подскажите как можно по другому решить задачу (в пхп).
4
05 июня 2006 года
mike
3.7K / / 01.10.2002
Конечно можно. Если хочешь одновременно работать с разными базами данных, то можно установить два соединения.

Но мне слабо представляется как из PHP выполнить два параллельных запроса.
15
05 июня 2006 года
shaelf
2.7K / / 04.05.2005
Эллементарно Ватсон:)
Берём за основу вот эту часть вопроса: Короче нужно запросить одновременно к двум базам в одном скрипте.
И можно делать вообще примитивно
 
Код:
mysql_connect('host' 'login', 'pass');
mysql_select_db('db');
mysql_query(query)
mysql_close();
mysql_connect('host2' 'login2', 'pass2');
mysql_select_db('db2');
mysql_query(query)
mysql_close();

Усё :)
Если я неправильно понял ТЗ, то пните меня ногой :)
14K
05 июня 2006 года
davvah
14 / / 05.06.2006
Да но в этом случае сначала выполняется первый запрос, выдает результат а после выполняется второй запрос.
Мне нужно не дожидаясь результатов первого запроса отправить второй запрос.
15
05 июня 2006 года
shaelf
2.7K / / 04.05.2005
тогда я это уже себе не представляю.
 
Код:
$result1 = mysql_query('query'); // В это мы получаем результат первого запроса
$result2 = mysql_query('query2'); // Тут мы получаем результат второго запроса

В общем они будут идти один за другим. Конструкция "begin, end" на сколько я понимаю тоже не катит...
4
05 июня 2006 года
mike
3.7K / / 01.10.2002
В PHP нет многопотоковсти, нет fork(). Параллельно ничего не выполнить.

Единственный вариант, это если запрос INSERT, то можно сделать его DELAYED.
332
05 июня 2006 года
Valiant
416 / / 27.09.2004
может я конечно чего то непонял
если я не ошибаюсь то пых не переходит
к следующей строке, пока пока не выполнит предъидущую...
да и как вы сами себе это представляете шагать сразу двумя ногами ???
просто обрабатывайте результаты первого запроса позднее ...
Если не сложно, то лучше приведите пример для чего вам надо это дело использовать ...
19K
30 марта 2007 года
constyk
4 / / 25.07.2006
[QUOTE=mike;125696]В PHP нет многопотоковсти, нет fork(). Параллельно ничего не выполнить.



http://ru.php.net/manual/ru/function.pcntl-fork.php
19K
30 марта 2007 года
constyk
4 / / 25.07.2006
Цитата: Valiant
может я конечно чего то непонял
если я не ошибаюсь то пых не переходит
к следующей строке, пока пока не выполнит предъидущую...
да и как вы сами себе это представляете шагать сразу двумя ногами ???
просто обрабатывайте результаты первого запроса позднее ...
Если не сложно, то лучше приведите пример для чего вам надо это дело использовать ...



на самом деле так работают все программы и на Си и на ПХП и на Бейсике, а чтоб "2-мя ногами" для этого используется fork в Си или аналоги в других я зыках, по сути порождается еще процесс, а далее задача ОС, если это Юниксоподобное или ОСпополам, то распределение времени: тебе-тебе-тебе 2раза-тебе.... Если вындовззз, особенно старые, то по сигналам - кусо кода выполняется, пока не отпустит систему и не даст сигнал. Но это все так оооооочень приблизитльно, рекомендую прочитать книжку Кернигана и Ритчи "Программирование на Си", после нее многе становится понятно.

8
30 марта 2007 года
mfender
3.5K / / 15.06.2005
Классно. А чего бы нам не рассмотреть физику процессов, в соответствии с которыми компьютер в единицу времени может выполнять только одно действие? :D
13
30 марта 2007 года
RussianSpy
3.0K / / 04.07.2006
Цитата: mfender
Классно. А чего бы нам не рассмотреть физику процессов, в соответствии с которыми компьютер в единицу времени может выполнять только одно действие? :D



Это не совсем так... За один такт процессор выполняет несколько операций.
Также не стоит забывать что эра одноядерных процессоров практически окончена.

308
30 марта 2007 года
Комаджу
850 / / 26.07.2006
Уважаемый топикстартер, а зачем Вам одновременный запрос в php? Ну, загрузятся данные из одной базы, потом из другой - страница отобразиться рано или поздно (это я про web).
13
30 марта 2007 года
RussianSpy
3.0K / / 04.07.2006
Цитата: Комаджу
Уважаемый топикстартер, а зачем Вам одновременный запрос в php? Ну, загрузятся данные из одной базы, потом из другой - страница отобразиться рано или поздно (это я про web).



Автору на эту тему уже с высокой вышки - на дату посмотри

23K
30 марта 2007 года
lost_shadow
13 / / 05.01.2007
Теоретически возможно использовать псевдомногопоточность - man select, вроде что-то подобное есть и в PHP для сетевых соединений. Практически же в этом случае придётся реализовывать протокол общения с БД самому, что очень трудоёмко. Как вариант можно сделать 2 одновременных запроса по протоколу http к специальному скрипту, который достанёт данные из базы, или вызвать внешний скрипт, который работает многопоточно. Но в любом случае я с трудом представляю себе задачу, где такое будет оправдано по сопутствующим сложностям в отладке, и уж точно одновременных соединений в этом случае должны быть десятки.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог