调用shell_exec(“php myscript.php”)进入无限循环

时间:2013-04-22 15:32:34

标签: php bash exec shell-exec

我决定将我的php脚本分叉,因为运行时间太长。当我在本地linux机器上运行shell_exec()调用时,我没有看到无限循环问题,但在托管机器上,脚本进入无限循环。我将代码减少到最低限度,我希望有人可以帮助我在这里看到问题:

涉及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;

&GT;

这是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);

&GT;

这会得到一个无限循环,文件'deleteme.txt'会不断重写。我只是猜测我可能在某个地方滥用'$'? 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

FILE_APPEND标记传递给file_put_contents(),否则文件将被反复覆盖:

file_put_contents ("deleteme.txt",$data, FILE_APPEND);