【发布时间】:2013-02-06 16:03:11
【问题描述】:
非常简单,我有一个程序需要执行一个大型进程(从 5 秒到几分钟不等),我不想让我的页面等待进程完成加载。
我知道我需要将这个 Gearman 作业作为后台进程运行,但我正在努力寻找合适的解决方案,以获取有关工作人员何时真正完成进程的实时状态更新。我使用了 PHP 示例中的以下代码 sn-p:
do {
sleep(3);
$stat = $gmclient->jobStatus($job_handle);
if (!$stat[0]) // the job is known so it is not done
$done = true;
echo "Running: " . ($stat[1] ? "true" : "false") . ", numerator: " . $stat[2] . ", denomintor: " . $stat[3] . "\n";
} while(!$done);
echo "done!\n";
这是可行的,但是它似乎只是在工作人员完成告诉作业要做什么时才将数据返回给客户端。相反,我想知道job 的文字处理何时完成。
我的真实例子:
- 从一个 API 中提取多个数据馈送(某些馈送需要的时间比其他馈送长)
- 加载几个总是加载速度很快的,在发送到工作队列的部分放置“等待/加载”动画
- 工作完成并完全检索结果后,将动画替换为结果
【问题讨论】:
-
来晚了,但如果这是对您问题的解决方案,请接受答案。
标签: php client real-time gearman worker