我决定分叉出我的 php 脚本,因为它需要很长时间才能运行。当我在本地 linux 机器上运行 shell_exec() 调用时,我没有看到无限循环问题,但在托管机器上,脚本进入了无限循环。我将代码减少到最低限度,我希望有人可以帮助我在这里看到问题:
涉及 3 个脚本:
test_shell.php --> 向 forkphp.sh 发出 shell_exec() --> 发出命令“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'不断重写。我只是猜测我可能在某处滥用了“$”?提前感谢您的帮助。