2010-12-16 4 views
1

Windows에서 명령 줄을 통해 PHP 스크립트를 호출 할 때마다 (cygwin 또는 cmd에서) 스크립트는 여러 번 (6 회) 실행되는 것처럼 보이지만 첫 번째 실행의 출력 만 화면의 출력으로 보내집니다. 그것은 매우 이상한 문제입니다. 묘사하기에는 조금 까다 롭습니다.PHP 스크립트는 명령 행에서 한 번만 호출 될 때 여러 번 실행됩니다. 첫 번째 실행의 출력 만이 stdout으로 전송됩니다

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 셸을 통해 스크립트를 실행해도 상관 없습니다. 나는 WAMP를 통해 설치된 php5.2.6 및 php5.2.7과 php5.2.11을 사용해 보았습니다. strace를 사용해 보았지만 출력이 공백이었습니다. 이전에 Windows에서 사용 해 본 적이 없었습니다. cygwin 설치가 올바르지 않은 것 같습니다. 나는 윈도우 7을 사용하고 있는데, 윈도우 7을 사용하기 시작할 때 문제가 발생했다. 나는 윈도우 7을 실행하는 동료가있다. 그러나 똑같은 문제가있다.하지만 내 모든 윈도우 XP를 포함한 모든 사람들은 전혀 문제가 없다. PHP는 CLI를.

나는 여기에서 명백한 무엇이든을 놓치지 않기를 바란다. 제가 제공 할 수있는 다른 것을 알려주고 누군가에게 어떤 아이디어 나 조언이 있으면 가장 감사 할 것입니다!

답변

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 그래서

[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)

0

그것은 참으로 정말 이상해 ... 이

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

기본적으로 file_put_contents()는 파일을 추가하지 않기 때문에 기본적으로 test.out에서 마지막 실행 시간 만 끝납니다. 제가 제공 한 스크립트는 실제로 문제를 설명하려고 시도했습니다. 이 문제를 일으키는 실제 문제는 php cli를 통해 셀렌 테스트를 실행 중이며 테스트가 각각 6 회씩 실행되고 있다는 것입니다. –

+0

아마도 Selenium과 관련이 있습니다 –

+0

그럴 것 같지 않습니다. 그래서 위의 예를 제공했습니다. –