jos*_*lat 12 php bash daemon message-queue beanstalkd
最近我一直在研究使用Bean的Beanstalkd.我已经学到了很多,但对服务器上的设置有一些疑问等.
以下是我看到它的工作方式:
我有一个bash脚本(例如下面的一个),它作为一个基本上执行PHP脚本的守护进程运行.
#!/bin/sh
php worker.php
Run Code Online (Sandbox Code Playgroud)4)worker脚本会有类似的东西来执行排队的任务:
while(1) {
$job = $this->pheanstalk->watch('test')->ignore('default')->reserve();
$job_encoded = json_decode($job->getData(), false);
$done_jobs[] = $job_encoded;
$this->log('job:'.print_r($job_encoded, 1));
$this->pheanstalk->delete($job);
}
Run Code Online (Sandbox Code Playgroud)
现在这里是基于上述设置的问题(如果我错了,请纠正我):
假设我有将RSS源导入数据库或其他任务的任务.如果10个用户同时执行此操作,则他们将全部排在"测试"管中.但是,它们只能一次执行一个.将10个不同的管同时执行会更好吗?
如果我确实需要更多电子管,那么这是否也意味着我需要10个工作脚本?除了watch()函数中的字符串文字之外,每个管都有一个基本相同的代码同时运行.
如果我将该脚本作为守护进程运行,那该怎么办?它会不断执行worker.php脚本吗?该脚本在理论上循环直到队列为空,所以不应该只启动一次吗?守护进程如何决定执行worker.php的频率?这只是一个场景吗?
谢谢!
job-stat命令查看特定$作业的来源(哪个管),或者如果您需要从另一个类别告诉每个类型,则将一些元信息放入消息中.reserve()让它等待几秒或更长时间,以便下一个工作变得可用,而不会在一个不停顿的紧密循环中失去控制所有 - 即使没有任何事情可做.附录:
exec $@).每当php脚本退出时,它都会重新运行PHP.| 归档时间: |
|
| 查看次数: |
7144 次 |
| 最近记录: |