仅当在命令行上调用一次时,PHP脚本才会执行多次。只有第一次运行的输出被发送到标准输出
每当我通过windows的命令行(在cygwin或cmd中)调用PHP脚本时,脚本似乎运行多次(6)次,但只有第一次运行的输出被发送到屏幕的输出。这是一个非常奇怪的问题,有点棘手的描述。仅当在命令行上调用一次时,PHP脚本才会执行多次。只有第一次运行的输出被发送到标准输出
test.php的:
<?php
$t = microtime();
error_log($t . "\n", 3, 'test.out');
echo $t;
?>
我运行该脚本一次,这就是结果
$ php test.php;
0.97800300 1292476780
$ cat test.out
0.97800300 1292476780
0.04000200 1292476781
0.09500200 1292476781
0.14700200 1292476781
0.19900200 1292476781
0.25600300 1292476781
在不同的测试文件,以及不同版本的PHP,它似乎始终运行6次。 如果我通过cygwin或windows shell运行脚本,这并不重要。 我试过使用php5.2.6和php5.2.7和php5.2.11 - 全部通过WAMP安装。 我试过使用strace,但它的输出是空白的 - 我以前从未在Windows上使用它,也许我的cygwin安装不正确。我使用的是Windows 7,当我开始使用Windows 7时,问题就开始了。我有一个同事在运行Windows 7,他有完全相同的问题,但是每个人(包括我以前的自己)运行windows xp都没有问题。 php CLI。
我希望我不会错过任何明显的东西!让我知道我可以提供的任何东西,如果任何人有任何想法或建议,我将非常感激!
所以现在看起来像在版本/ PHP构建的我使用一个错误,因为不同版本的PHP不会产生测试同样的错误。我清楚地在我上面的帖子中发现了一个错误(并在昨天进行了测试),并没有正确测试不同的版本。
更新test.php的
<?php
$t = microtime();
error_log($t."\n", 3, $argv[1]);
echo $t;
?>
并与5.2.6,5.2.7和5.2.11
[email protected] ~
$ /cygdrive/c/wamp/bin/php/php5.2.6/php test.php test-526.out
0.20960200 1292539753
[email protected] ~
$ cat test-526.out
0.20960200 1292539753
0.27060200 1292539753
0.32160200 1292539753
0.37460200 1292539753
0.42460200 1292539753
0.47660200 1292539753
[email protected] ~
$ /cygdrive/c/wamp/bin/php/php5.2.7/php test.php test-527.out
0.32660200 1292539767
[email protected] ~
$ cat test-527.out
0.32660200 1292539767
[email protected] ~
$ /cygdrive/c/wamp/bin/php/php5.2.11/php test.php test-5211.out
0.70760500 1292539776
[email protected] ~
$ cat test-5211.out
0.70760500 1292539776
所以我想在这个阶段运行我只能断定这是一个错误我得到的PHP版本5.2.6:PHP 5.2.6 (cli) (built: May 2 2008 18:02:07)
这确实很奇怪...... 试试这个
<?php
$t = microtime();
file_put_contents('test.out', $t);
echo $t;
?>
它本质上是一样的,但只有最后一次运行的时间结束于test.out,因为默认情况下,file_put_contents()覆盖文件不会附加它。我提供的脚本实际上只是试图说明问题。导致这个问题的实际情况是我正在通过php cli运行硒测试,并且测试全部都运行了6次。 – 2010-12-16 05:45:32
所以它可能与硒 – 2010-12-16 07:20:30
我不认为是这样。这就是我提供上述例子的原因。 – 2010-12-16 22:23:58