2013-02-11 2 views
3

windows-7 OS 및 wamp 서버를 사용하고 있습니다. 나는 2 개의 PHP 파일 trigger.php, background.php가있다. 백그라운드에서 background.php를 실행하고 싶습니다.이 파일을 trigger.php에서 호출해야합니다.Windows 환경의 PHP 백그라운드 프로세스

나는 아래의 방법을 시도했다.

은 내가 trigger.php

$WshShell = new COM("WScript.Shell"); 
    $oExec = $WshShell->Run("C:\wamp\bin\php\php5.3.5\php-win.exe -f C:/wamp/www/background.php", 0, false); 

이 코드를 추가하지만 내 background.php 호출 받고 있지 않습니다.

어떻게 할 수 있습니까?

모든 의견을 환영합니다. 이 경우

+0

Windows 스크립트 호스트가 제대로 설치되어 있고 IIS를 사용하여 COM의 보안 설정을 확인하십시오. 답장 krishnanunni에 대해이 – Kris

답변

10
function execInBackground($cmd) { 
    if (substr(php_uname(), 0, 7) == "Windows"){ 
     pclose(popen("start /B ". $cmd, "r")); 
    } 
    else { 
     exec($cmd . " > /dev/null &"); 
    } 
} 

$cmd"php C:/wamp/www/path/to/background.php"

+0

주셔서 감사합니다 MS 사이트를 참조하십시오. 함수 내에서 background.php 파일을 호출하는 코드를 어디에 포함해야합니까? $ cmd는 무엇을 의미합니까? –

+0

안녕하세요 krishnanunni, trigger.php에서 내 방법을 사용했습니다. 그러나 trigger.php는 실행 (실행)에서 멈추지 않습니다. backgroung.php에는 테이블에 데이터를 추가하는 insert 문 하나만 포함되어 있습니다. 실행하는데 많은 시간이 걸리지 않기를 바랍니다. –

+0

이 메소드 – Kris

0

나는 아래와 같은 기능을 변경,

$cmd = 'C:\wamp\bin\php\php5.3.5\php.exe C:\wamp\www\email3.php'; 

function execInBackground($cmd) { 
    if (substr(php_uname(), 0, 7) == "Windows"){ 
     pclose(popen("start /B " . $cmd, "r")); 
    } 
    else { 
     exec($cmd . " > /dev/null &"); 
    } 
} 

와 나를위한 작품 일 것이다. :)

+0

매개 변수를 전달하려면 어떻게해야합니까? C : \ Wamp \ www \ email3.php와 같은 쿼리 문자열을 사용하려고했는데 id = value이지만 작동하지 않습니다. –