Может ли PHP вызвать функцию и не ждать, пока она вернется? Так что-то вроде этого:
function callback($pause, $arg) {
sleep($pause);
echo $arg, "\n";
}
header('Content-Type: text/plain');
fast_call_user_func_array('callback', array(3, 'three'));
fast_call_user_func_array('callback', array(2, 'two'));
fast_call_user_func_array('callback', array(1, 'one'));
будет выводить
one (after 1 second)
two (after 2 seconds)
three (after 3 seconds)
вместо
three (after 3 seconds)
two (after 3 + 2 = 5 seconds)
one (after 3 + 2 + 1 = 6 seconds)
Основной сценарий предназначен для запуска в качестве постоянного процесса (TCP-сервер). Функция callback()
будет получать данные от клиента, выполнять внешний скрипт PHP, а затем делать что-то на основе других аргументов, передаваемых callback()
. Проблема в том, что основной скрипт не должен ждать завершения внешнего PHP-скрипта. Результат внешнего скрипта важен, поэтому exec('php -f file.php &')
не вариант.
Edit:
Многие рекомендовали взглянуть на PCNTL, поэтому кажется, что такая функциональность может быть достигнута. PCNTL недоступен в Windows, и у меня сейчас нет доступа к машине с Linux, поэтому я не могу проверить ее, но если так много людей посоветовали это, то это должно сработать
Спасибо всем!