Я решил раскошелиться на свой php-скрипт, потому что он слишком долго выполняется. Когда я запускал вызов shell_exec() на локальной машине с Linux, я не видел проблемы с бесконечным циклом, но на хостинговой машине сценарий зацикливался. Я сократил код до минимума, и я надеюсь, что кто-то может помочь мне увидеть проблему здесь:
Задействовано 3 сценария:
test_shell.php --> вызывает shell_exec() для forkphp.sh --> который выдает команду "path/to/php write_hello_world.php"
начиная сверху вниз, сначала скрипт test_shell.php:
<?php
if(function_exists('shell_exec')) {
echo "shell_exec() is enabled";
}
$cmd = "./forkphp.sh > /dev/null 2>&1 &";
echo "<br/> About to shell_exec($cmd)<br/>";
$out = shell_exec($cmd);
echo $out;
?>
Вот forkphp.sh:
#!/bin/bash
# About to run /usr/bin/php write_hello_world.php
echo $(/usr/bin/php write_hello_world.php)
Наконец, вот write_hello_word.php:
<?php
$data = "This is a test : testing \n testing \n ";
file_put_contents ("deleteme.txt",$data);
?>
Получается бесконечный цикл, в котором файл 'deleteme.txt' постоянно перезаписывается. Я только предполагаю, что я, возможно, где-то неправильно использую «$»? Заранее спасибо за помощь.
write_hello_world.php
добавьтеmicrotime(1)
в конец$data
. Проверьте файл, чтобы увидеть, действительно ли он перезаписывается или это только кажется. Кроме того, возможно, стоит проверить дерево процессов на коробке, чтобы увидеть, что именно запускает. - person Mr. Llama   schedule 22.04.2013file_put_contents
перезаписывает файл, поэтому вы не должны видеть несколько строк изtail
. - person Mr. Llama   schedule 22.04.2013<?php exec ("php -v");
Зацикливается до сбоя<?php exec ("php -v >> log");
Журнал снова и снова показывает следующееRunning X-Powered-By: PHP/5.5.38 Content-type: text/html
- person Button 108   schedule 02.05.2017