当只在命令行上调用一次时,PHP脚本正在执行多次。仅将第一次运行的输出发送到stdout

时间:2010-12-16 05:27:29

标签: php windows-7 cygwin command-line-interface

每当我通过Windows中的命令行调用PHP脚本时(在cygwin或cmd中),脚本似乎运行了多次(6)次,但是只有第一次运行的输出被发送到屏幕的输出。这是一个非常奇怪的问题,描述起来有点棘手。

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。

我希望我不会错过任何明显的东西!让我知道我能提供的任何其他内容,如果有任何想法或建议,我将非常感激!

2 个答案:

答案 0 :(得分:0)

这确实很奇怪...... 试试这个

<?php
$t = microtime();
file_put_contents('test.out', $t);
echo $t;
?>

答案 1 :(得分:0)

所以它现在看起来像我正在使用的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

运行
Paul@Paul-Macbook-W7 ~
$ /cygdrive/c/wamp/bin/php/php5.2.6/php test.php test-526.out
0.20960200 1292539753
Paul@Paul-Macbook-W7 ~
$ cat test-526.out
0.20960200 1292539753
0.27060200 1292539753
0.32160200 1292539753
0.37460200 1292539753
0.42460200 1292539753
0.47660200 1292539753

Paul@Paul-Macbook-W7 ~
$ /cygdrive/c/wamp/bin/php/php5.2.7/php test.php test-527.out
0.32660200 1292539767
Paul@Paul-Macbook-W7 ~
$ cat test-527.out
0.32660200 1292539767

Paul@Paul-Macbook-W7 ~
$ /cygdrive/c/wamp/bin/php/php5.2.11/php test.php test-5211.out
0.70760500 1292539776
Paul@Paul-Macbook-W7 ~
$ cat test-5211.out
0.70760500 1292539776

所以我想在这个阶段我只能得出它是我在5.2.6中获得的php构建中的一个错误:PHP 5.2.6 (cli) (built: May 2 2008 18:02:07)