Я пытаюсь запустить php-скрипт многопоточным с использованием PHP pThreads в среде IIS 7 PHP 5.6 x86 (потокобезопасная) среда. Я создал проблему github, но я не слышал назад, и хотя некоторые другие кодеры здесь, возможно, столкнулись с одной и той же проблемой.
PHP работает нормально и скрипты, которые не требуют выполнения pThreads, как обычно. Однако, когда я добавляю некоторый многопоточный код в мой скрипт, только код кода, который не является многопоточным, выполняется в браузере, если я не вызываю phpinfo перед выполнением кода. Например:
<?php class AsyncOperation extends Thread { public function run(){ echo 'hello world'; } } $thread = new AsyncOperation(); if($thread->start()) { $thread->join(); } ?>
Не имеет выхода в браузере (все равно код ответа 200, хотя).
Но следующий код с phpinfo называется первым работает:
<?php phpinfo(); class AsyncOperation extends Thread { public function run(){ echo 'hello world'; } } $thread = new AsyncOperation(); if($thread->start()) { $thread->join(); } ?>
Ожидаемый вывод всего содержимого phpinfo, а затем привет мир. Я также заметил, что отправка phpinfo(64)
не phpinfo(64)
мир приветствия, но все другие допустимые параметры для phpinfo вызывают мир приветствия.
Я также попытался запустить исходный (без phpinfo) скрипт из командной строки и заметил, что «hello world» отражается в консоли. Что заставляет меня думать, что это неправильная конфигурация IIS7, но это не объясняет, как заставить phpinfo заставить его работать?
Также я должен отметить, что в журналах ошибок ничего нет, и система настроена на запись всех ошибок.