Значит, задача: запустить из одного скрипта PHP через командную строку другой PHP скрипт
Суть скрипта следующая. Есть файл index.php, его я стартую обращением через браузер. Файл index.php должен запустить файл client.php. Поскольку в будущем предполагается запускать этот client.php несколько раз параллельно и, кроме того, требуется, чтобы выполнение index.php продолжалось, а не ожидало, пока исполнится client.php, я пытаюсь запускать client.php через командную строку функцией popen()
index.php:
client.php
Вывод по идее должен быть примерно таким:
Однако вместо этого имею много раз повторяющееся This is index - то есть, судя по всему, popen() запускает не client.php, а перезапускает index.php. В результате имеем рекурсивный запуск index.php, который заканчивается, когда я исчерпываю разрешенное количество одновременно запущенных скриптов
Собственно, вопрос. Что я делаю не так?
Еще пообщался с провайдером, его ответ таков, что реально исполняется вот такая команда:
sh -c /usr/local/apache/bin/php-cgi.5 -q -f файл.php
То есть, судя по всему, по каким-то причинам sh не всю часть того, что написано после php-cgi.5, воспринимает как аргументы именно для php-cgi.5, и интерпретирует их как аргументы для самого sh. Получается, нужно какое-то экранирование? Но какое? Кавычки (одинарные и 2ые) пробовал, команда просто не исполняется
Кстати добавлю к этому то, что ключ -q тоже игнорируется: заголовки в ответе присутствовать не должны с этим ключем, но они присутствуют(Отредактировано автором: 17 Августа, 2012 - 14:29:33)
|