我有点像新手 我正在Codeigniter写一个社交应用程序。一旦用户登录,就必须做很多事情来准备用户网络,发送电子邮件,创建推荐朋友列表等。 我们已经编写了各种功能来完成这些功能。
让我们说主控制器索引具有SignUp功能。
注册后,我们希望将用户重定向到Dashboard控制器,但在后台,我们要运行
我不知道如何在后台运行任何任务。所以我想也许我可以编写一个一个接一个地调用这些函数的shell脚本 我们将通过Codeigniter调用此脚本并传递UserId 然后,此脚本将调用各个函数并将userId传递给那些函数。
任何人都可以告诉我
答案 0 :(得分:2)
我建议您使用队列系统,检查beanstalk(以及PHP库pheanstalk)之类的内容。
然后,您可以在队列中为每个要执行的操作添加一个作业,然后在后台进程(可能是cron)中,您将获取作业并运行它们。
http://kr.github.com/beanstalkd/ https://github.com/pda/pheanstalk/
因此,在您的SignUp函数中,您将创建一个作业并放入队列,您可以为每个不同类型的作业使用队列,然后为每个队列设置一个作业使用者。
// some pseudo code
function signUp()
{
$jobData = json_encode(array(
'template' => 'newUser',
'to' => 'john@example.com'
));
$this->pheanstalk->useTube('OutboundEmails')->put($jobData);
// add other jobs for other tasks here too
}
然后你可以拥有运行你的消费者脚本的cron脚本。
// pseudo for this mail consumer
$pheanstalk->watch('OutboundEmails')->ignore('default');
while ($job = $pheanstalk->reserve())
{
// send the email using the data in the job
$job->getData() // returns your JSON
}
希望有所帮助。