0

当用户在我的 php 驱动站点上注册时,注册脚本必须执行一些任务,其中一些任务需要更长的时间,因为他们必须联系 3rd 方服务器。

我怎样才能将这些任务从主 php 脚本中分离出来,以便用户立即看到结果?

4

4 回答 4

2

您可以创建一个子进程,或者只是在您的数据库或一个小文件中创建一个队列并运行一个cronjob。您还可以通过运行来创建子进程exec()

exec('php /path/to/script.php');
于 2013-03-29T12:29:05.523 回答
0

不知道你想做什么...

您可以使用 exec('php myScript.php'); 执行外部 php 脚本;

但是用户没有得到这个脚本的结果,因为用户只得到主 php 脚本的结果......

如果你想让用户得到所有执行脚本的结果,那么你应该使用 ajax 调用

于 2013-03-29T12:39:38.963 回答
0

假设您很乐意独立于第 3 方请求向用户发送响应......

如果您忽略_user_abort() 并发送标头(“连接:关闭”);并刷新输出缓冲区,然后您可以简单地通过 register_shutdown_function() 调用远程站点。如果要处理多个远程请求,则使用 curl_multi 函数并行运行它们。

于 2015-03-10T19:32:51.930 回答
0

如果不需要 3rd 方请求来显示页面,您可以随时在后台创建一个 PHP 脚本,方法是执行

shell_exec('echo /usr/bin/php -q myLongScript.php | at now');

您可以考虑将信息存储在数据库表中并通过 PHP cronjob 脚本以预定的时间间隔处理第 3 方注册,而不是在每次新用户注册时分叉一个新实例来处理第 3 方注册。

通过 Cron 作业运行 PHP

于 2016-03-30T10:38:31.523 回答