2013-02-11 2 views
3

с использованием ОС Windows 7 и Wamp Server. У меня есть 2 php-файла trigger.php, background.php. Я хочу запустить background.php в фоновом режиме. Мне нужно вызвать этот файл из trigger.php.php фоновый процесс в среде Windows

Я пробовал ниже методы.

я добавил этот код в 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 Script Host установлен правильно, и если вы используете проверку IIS для параметров безопасности COM. Обратитесь к сайтам MS для этого – 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

спасибо за ответ krishnanunni. в вашей функции, где я должен включать код для вызова моего файла background.php, что означает $ cmd? –

+0

hi krishnanunni, использовал ваш метод в trigger.php. но, trigger.php не останавливается от запуска (выполнения). my backgroung.php содержит только один оператор insert для добавления данных в таблицу. надеюсь, что это не займет много времени, чтобы выполнить. –

+0

call exit() после вызова этого метода – 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

Если я хочу передать параметр, то как я должен пройти? Я попытался использовать querystring как C: \ wamp \ www \ email3.php? Id = значение, но он не работает. –

Смежные вопросы