우리는 Windows 서버에서 PHP를 실행 중입니다. 실제로 많은 문제가 발생하지만 현재로서는 마이그레이션 옵션이 없습니다. 사용자가 시작한 작업에는 일정 시간이 소요되는 몇 가지 사항을 시작해야하며 사용자가 성공 또는 실패했는지 여부를 알 필요가없는 몇 가지 사항이 있습니다 (예 : 이메일 발송 또는 일부 확인 제 3 자 계정이 업데이트됩니다. pcntl_fork()
으로 포크 할 수 있으면 매우 간단하지만 Windows에서는 PCNTL 기능을 사용할 수 없습니다.Windows에서 PHP로 포킹
exec('php-cgi.exe somescript.php');
그러나이 훨씬 더 복잡 할 것 :
내가 얻을 수있는 가장 가까운 이러한 성격의 무언가를해야 할 것 같다. 내가 시작해야 할 행동은 이미 실행중인 프로세스에 존재할 많은 컨텍스트에 의존합니다. 위의 예제를 사용하려면 필자는 필수 데이터를 찾아내어 새로운 스크립트에 어떤 식 으로든 제공해야합니다. 제가 포크를 잡을 수 있다면, 부모 프로세스가 일찍 돌아와서 아이가 몇 가지 일을 더 많이하도록 할 수 있습니다.
Windows에서 컴파일 된 다양한 PCNTL 기능을 얻는 데있어서 자신의 작업에 대해 이야기하는 사람이 몇 명 있었지만 사용할 수있는 링크가없는 것 같았습니다.
this question에도 불구하고 사실상 동일한 이름을 가지고 있지만, 문제는 fork 할 필요보다 실행 시간 초과가 더 많이 걸린 것처럼 보입니다. 그래서, php-cgi를 호출하는 것에 대해 리펙토링하기위한 최선의 선택이 있습니까? 아니면 다른 옵션이 있습니까?
편집 : exec()
이 작동하지 않을 것입니다. 최소한 전화를 다시받을 때까지 기다릴 때까지 다른 측면을 생각하지 않아도됩니다. 나는 START
같은 일종의 exec('start php-cgi.exe somescript.php');
을 사용할 수 있다고 생각했지만 다른 스크립트가 끝날 때까지 계속 대기합니다.
당신은 이것을 위해 크론 작업을 고려 했습니까? (몇 가지 옵션이 있습니다. http://www.google.com/search?q = cron + windows) – user187291
필자가 볼 수 있듯이 psexec을 사용하는 것만 큼 효과가있는 것처럼 보입니다. 그러나 방금 psexec을 사용하여 작업 할 수있게되었습니다. –