当用户在我的php驱动网站上注册时,注册脚本必须执行一些任务,因为他们必须联系第三方服务器。
如何将这些任务从主PHP脚本中分离出来,以便用户立即看到结果?
答案 0 :(得分:2)
您可以create a child process,或者只是在数据库或小文件中创建一个队列并运行cronjob。您还可以通过运行exec()
来创建子流程。
exec('php /path/to/script.php');
答案 1 :(得分:0)
不确定你想做什么......
你可以用exec('php myScript.php')执行extern php脚本;
但是比用户没有得到这个脚本的结果,因为用户只得到主php脚本的结果......
如果您想让用户获得所有已执行脚本的结果,请使用ajax调用
答案 2 :(得分:0)
假设您很乐意独立于第三方请求向用户发送回复....
如果你ignore_user_abort()并发送一个标题(“Connection:close”);并刷新输出缓冲区,然后您可以通过register_shutdown_function()简单地调用远程站点。如果要处理多个远程请求,请使用curl_multi函数并行运行它们。
答案 3 :(得分:0)
如果不需要第三方请求来显示页面,您可以随时通过执行
在后台派生PHP脚本shell_exec(' echo / usr / bin / php -q myLongScript.php | at now');
每次新用户注册时,您都可以考虑将信息存储在数据库表中,并通过PHP cronjob脚本按计划的时间间隔处理第三方注册,而不是分配新实例来处理第三方注册。