exec()
함수는 실행 된 프로그램의 출력을 처리하므로 출력을 /dev/null
(사용자가 쓰는 모든 데이터를 자동으로 잃어 버리는 가상 쓰기 가능 파일)로 리디렉션 할 것을 제안합니다.
는 실행 해보십시오 :
exec("/usr/local/bin/php -q /home/gooffers/somefile.php > /dev/null 2>&1 &");
참고 : 2>&1
는 표준 출력 오류 출력을 리디렉션 및 > /dev/null
은 가상 파일로 표준 출력을 리디렉션합니다.
여전히 어려움이 있다면 다른 스크립트 만 실행하는 스크립트를 만들 수 있습니다. exec()
은 작업을 수행 할 때 프로세스를 따르지만 작업이 완료되면 해제합니다. 실행 된 스크립트가 다른 스크립트 만 실행하면 작업은 매우 빨라지고 exec도 같은 방식으로 해제됩니다.
구현을 살펴 보겠습니다. 포함하는 exec.php
만들기 :
<?php
if (count($argv) == 1)
{
die('You must give a script to exec...');
}
array_shift($argv);
$cmd = '/usr/local/bin/php -q';
foreach ($argv as $arg)
{
$cmd .= " " . escapeshellarg($arg);
}
exec("{$cmd} > /dev/null 2>&1 &");
?>
지금, 다음 명령을 실행
exec("/usr/local/bin/php -q exec.php /home/gooffers/somefile.php > /dev/null 2>&1 &");
당신은 인자가있는 경우
, 당신은 그들도 제공 할 수 있습니다 :
exec("/usr/local/bin/php -q exec.php /home/gooffers/somefile.php x y z > /dev/null 2>&1 &");
에 http : // 유래합니다. com/questions/45953/php-execute-a-background-process –
셸 명령을 "브라우저에서 시간 초과"할 수 있습니까? –