当用户在我的 php 驱动站点上注册时,注册脚本必须执行一些任务,其中一些任务需要更长的时间,因为他们必须联系 3rd 方服务器。
我怎样才能将这些任务从主 php 脚本中分离出来,以便用户立即看到结果?
当用户在我的 php 驱动站点上注册时,注册脚本必须执行一些任务,其中一些任务需要更长的时间,因为他们必须联系 3rd 方服务器。
我怎样才能将这些任务从主 php 脚本中分离出来,以便用户立即看到结果?
不知道你想做什么...
您可以使用 exec('php myScript.php'); 执行外部 php 脚本;
但是用户没有得到这个脚本的结果,因为用户只得到主 php 脚本的结果......
如果你想让用户得到所有执行脚本的结果,那么你应该使用 ajax 调用
假设您很乐意独立于第 3 方请求向用户发送响应......
如果您忽略_user_abort() 并发送标头(“连接:关闭”);并刷新输出缓冲区,然后您可以简单地通过 register_shutdown_function() 调用远程站点。如果要处理多个远程请求,则使用 curl_multi 函数并行运行它们。
如果不需要 3rd 方请求来显示页面,您可以随时在后台创建一个 PHP 脚本,方法是执行
shell_exec('echo /usr/bin/php -q myLongScript.php | at now');
您可以考虑将信息存储在数据库表中并通过 PHP cronjob 脚本以预定的时间间隔处理第 3 方注册,而不是在每次新用户注册时分叉一个新实例来处理第 3 方注册。