결과를 기다리지 않는 php exec 명령(또는 이와 유사)
실행하고 싶은 명령어가 있습니다만, PHP가 결과를 기다리는 것을 원하지 않습니다.
<?php
echo "Starting Script";
exec('run_baby_run');
echo "Thanks, Script is running in background";
?>
PHP가 결과를 기다리지 않도록 할 수 있습니까?즉, 그냥 시작하고 다음 명령으로 넘어갑니다.
아무것도 찾을 수 없고, 가능할지도 모르겠어요.내가 찾을 수 있는 최선의 방법은 CRON 작업을 1분 안에 시작하는 사람이었어.
매뉴얼에서 다음 항목을 참조하십시오.
명령어를 실행하여 PHP 스크립트를 정지하지 않도록 하기 위해
실행되며, 실행 중인 프로그램이 PHP로 출력되지 않아야 합니다.이렇게 하려면
stdout과 stderr을 모두 /dev/dev로 리다이렉트한 후 백그라운드에서 실행합니다.
> /dev/null 2>&1 &
명령어를 실행하여 명령어를 실행하거나
그것은 또 다른 과정으로 탄생했다.
Apache 스레드에 의존하지 않음
계속 달리다
someone cancels the page) 를 실행합니다.
exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');
명령어를 백그라운드에서 실행하려면&
마지막에는 다음과 같이 표시됩니다.
exec('run_baby_run &');
그러나 이것만 하면 다음과 같은 이유로 스크립트가 중단됩니다.
프로그램이 exec 함수로 시작되는 경우 백그라운드에서 계속 실행되도록 하려면 프로그램의 출력을 파일 또는 다른 출력 스트림으로 리다이렉트해야 합니다.그렇지 않으면 프로그램 실행이 종료될 때까지 PHP가 중단됩니다.
따라서 명령어 stdout을 파일로 리다이렉트할 수 있습니다.나중에 참조하거나,/dev/null
다음과 같이 폐기할 경우:
exec('run_baby_run > /dev/null &');
wget을 사용하여 대기하지 않고 URL에 알립니다.
$command = 'wget -qO- http://test.com/data=data';
exec('nohup ' . $command . ' >> /dev/null 2>&1 & echo $!', $pid);
이 경우 ls를 사용하여 대기하지 않고 로그를 업데이트합니다.
$command = 'ls -la > content.log';
exec('nohup ' . $command . ' >> /dev/null 2>&1 & echo $!', $pid);
이 질문에는 답변이 되어 있습니다만, 여기서 찾은 답변은 시나리오(또는 Windows)에 적합하지 않습니다.
Xampp v3.2.4에서 PHP 7.2를 탑재한 Windows 10 노트북을 사용하고 있습니다.
$command = 'php Cron.php send_email "'. $id .'"';
if ( substr(php_uname(), 0, 7) == "Windows" )
{
//windows
pclose(popen("start /B " . $command . " 1> temp/update_log 2>&1 &", "r"));
}
else
{
//linux
shell_exec( $command . " > /dev/null 2>&1 &" );
}
나한테는 완벽하게 먹혔어.
창문 닦는 데 도움이 됐으면 좋겠어요.건배.
그것을 실장하는 방법에는 두 가지가 있습니다.가장 쉬운 방법은 dev/null에 대한 직접 결과입니다.
exec("run_baby_run > /dev/null 2>&1 &");
그러나 다른 작업을 수행해야 할 경우 ignore_user_abort를 고려할 수 있습니다.이 경우 연결을 닫은 후에도 스크립트가 실행됩니다.
"exec nohup setsid your_command"
nohup을 사용하면 부팅된 프로세스가 먼저 종료된 경우에도 your_command를 계속할 수 있습니다.이 경우 SIGNUP 신호가 your_command로 전송되어 신호가 종료됩니다(신호를 포착하여 무시하지 않는 한).
Windows 에서는, 다음의 COM 오브젝트를 사용할 수 있습니다.
if(class_exists('COM')) {
$shell = new COM('WScript.Shell');
$shell->Run($cmd, 1, false);
}
else {
exec('nohup ' . $cmd . ' 2>&1 &');
}
언급URL : https://stackoverflow.com/questions/3819398/php-exec-command-or-similar-to-not-wait-for-result
'programing' 카테고리의 다른 글
쿠키 또는 로컬 스토리지 없이 사용자 인식 가능 (0) | 2022.11.07 |
---|---|
실제 효과가 없는 트랜잭션은 온디스크 데이터베이스에 영향을 미칩니까? (0) | 2022.11.07 |
array_module을 객체에 적용하시겠습니까? (0) | 2022.11.07 |
1부터 시작하는 인덱스를 사용하여 PHP에서 어레이를 다시 인덱싱하려면 어떻게 해야 합니까? (0) | 2022.11.07 |
Python은 강한 타입입니까? (0) | 2022.11.06 |