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

发布于 2024-10-08 01:17:58 字数 852 浏览 1 评论 0原文

每次我通过 Windows 中的命令行(在 cygwin 或 cmd 中)调用 PHP 脚本时,该脚本似乎运行了多次 (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。

我希望我没有遗漏任何明显的东西!让我知道我还能提供什么,如果有人有任何想法或建议,我将不胜感激!

Everytime I invoke a PHP script via the command line in windows (either in cygwin or cmd) the script seems to be running multiple (6) times, however only the output of the first run is sent to the screen's output. It's a very weird problem, a little tricky to describe.

test.php:

<?php
$t = microtime();
error_log($t . "\n", 3, 'test.out');
echo $t;
?>

I run the script once, and this is the result

$ 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

Across different test files, and different versions of PHP, it seems to consistently run 6 times.
It Doesn't matter if I run the script through cygwin or the windows shell.
I've Tried using php5.2.6 and php5.2.7 and php5.2.11 - all installed via WAMP.
I tried using strace, but its output was blank - I've never used it on windows before, perhaps my cygwin installation isn't correct. I'm using windows 7, and the problem started when I started using windows 7. I have a colleague running windows 7 and he has the exact same problem, however everyone (including my former self) running windows xp has no problem at all with the php CLI.

I hope I'm not missing anything obvious here! Let me know anything else I can provide, and if anyone has any ideas or advice I would be most grateful!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浅唱ヾ落雨殇 2024-10-15 01:17:58

确实是真的很奇怪……
试试这个

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

It's indeed really weird...
Try this

<?php
$t = microtime();
file_put_contents('test.out', $t);
echo $t;
?>
拥抱没勇气 2024-10-15 01:17:58

所以它现在看起来像是我正在使用的 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)(构建时间:2008 年 5 月 2 日 18:02:07)

So it now looks like an error in the versions/builds of PHP I'm using, as testing with different versions of PHP will not produce the same error. I clearly made an error in my above post (and testing yesterday) and didn't correctly test with the different versions.

Updated test.php

<?php
$t = microtime();
error_log($t."\n", 3, $argv[1]);
echo $t;
?>

And running with 5.2.6, 5.2.7 and 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

So I guess at this stage I can only conclude it's a bug in the php build I've got for 5.2.6: PHP 5.2.6 (cli) (built: May 2 2008 18:02:07)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文