Выполняется ли серверный PHP-скрипт асинхронно?


Если PHP-скрипт вызывается сервером через командную строку (на сервере Ubuntu), может ли одновременно выполняться несколько экземпляров этого скрипта? В моем случае это PHP-скрипт, который преобразует загруженное видео с помощью FFmpeg. Итак, если восемь пользователей загружают видео в один и тот же момент (или очень близко к нему), будут ли одновременно запущены восемь экземпляров этого PHP-скрипта или они будут стоять в очереди один за другим? Если они встанут в очередь, есть ли способ изменить ее, чтобы можно было запускать несколько экземпляров одновременно?

Author: CGriffin, 2015-09-07

1 answers

Несколько экземпляров одного и того же скрипта действительно могут выполняться одновременно. Следует отметить, что производительность будет снижаться по мере одновременного запуска большего количества сценариев. Также следует отметить, что если вы взаимодействуете с базой данных, и у вас LOCK таблица для записи, это невозможно сделать асинхронно и приведет к формированию очереди (хотя и незначительной, в зависимости от выполняемых операций).

Доказательство

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

 5
Author: ScottMcGready, 2015-09-06 23:42:15