Является mysql_query под PHP блокирующейся функцией?

Предположим, что я выполняю несколько запросов на использовании сервера mysql_query. Результаты каждого запроса влияют на последующий запрос. Будет каждый вызов mysql_query будьте полностью выполнены, прежде чем управление идет дальше к следующему?

Править: Я забыл упоминать, я не использую механизм системы хранения транзакций.

5
задан susmits 16 April 2010 в 12:09
поделиться

4 ответа

Да, сервер MySQL должен вернуть данные и завершить запрос, прежде чем PHP перейдет к следующему действию, будь то присвоение возвращаемого значения или переход к следующему строка кода.

mysql_query( "INSERT INTO y VALUES (x,1)" );
mysql_query( "SELECT x FROM y WHERE z=1" );
mysql_query( "UPDATE y SET x=x+1 WHERE z=1" );
mysql_query( "SELECT x FROM y WHERE z=1" );

x будет 1, затем 2, и ко времени четвертого оператора 2 будет возвращено скрипту. Невозможно выполнять запросы параллельно в одном сценарии PHP - для этого потребуется параллельное выполнение или многопоточность на другом языке (например, Java).

6
ответ дан 13 December 2019 в 22:04
поделиться

Когда вы не используете транзакции, MySQL мгновенно фиксирует каждый запрос, независимо от используемого вами языка программирования. Так что да, вы можете положиться на последовательность ваших запросов.

0
ответ дан 13 December 2019 в 22:04
поделиться

В том же скрипте и потоке, да. Другие запросы из других скриптов PHP могут выполняться одновременно, но все запросы из вашего скрипта php будут блокироваться.

Вы всегда сможете оценить возвращаемое значение, прежде чем двигаться дальше.

1
ответ дан 13 December 2019 в 22:04
поделиться

Как уже упоминалось другими, PHP - это последовательный язык (т.е. одна инструкция будет выполняться после следующей) без явной поддержки потоковой передачи. Однако вы можете использовать mysql_unbuffered_query , который будет блокироваться только до тех пор, пока не будет возвращена первая строка результата (в отличие от ожидания всех строк, как это делает mysql_query).

1
ответ дан 13 December 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: