我建议您改用队列系统,检查诸如 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
}
希望有帮助。