PHP:如何将信息返回到等待的脚本并继续处理

jW.*_*jW. 6 php

假设存在两个脚本Requester.php和Provider.php,并且Requester需要从Provider处理并向其发出http请求(Provider.php?data ="data").在这种情况下,Provider快速找到答案,但维护系统必须在整个数据库中执行各种更新.有没有办法立即将值返回给Requester,然后继续在Provider中处理.

Psuedo Code

Provider.php 
{
   $answer = getAnswer($_GET['data']);
   echo $answer;
   //SIGNAL TO REQUESTER THAT WE ARE FINISHED
   processDBUpdates();
   return;
}
Run Code Online (Sandbox Code Playgroud)

小智 1

您基本上想要发出 1 个进程结束的信号(返回到原始进程Requester.php)并生成一个新进程(完成Provider.php)。可能有一种更优雅的方法来实现这一点,但我已经通过几种不同的方式实现了这一点。所有这些基本上都会导致执行命令以关闭第二个进程。

将以下内容添加> /dev/null 2>&1 &到命令末尾将允许它在后台运行,而不会抑制当前脚本的实际执行

像下面这样的东西可能对你有用:

exec("wget -O - \"$url\" > /dev/null 2>&1 &"); 
Run Code Online (Sandbox Code Playgroud)

-- 尽管您也可以将其作为命令行 PHP 进程来执行。

您还可以保存需要处理的信息,并在 cron 作业上处理剩余的处理,该作业无需执行即可重新创建相同类型的功能。