2

我有点新手。
我正在 Codeigniter 中编写一个社交应用程序。用户登录后,必须做很多事情来准备用户网络、发送电子邮件、创建推荐朋友列表等。我们已经编写了函数来完成这些工作。

可以说有一个带有功能 SignUp 的主控制器索引。

注册后,我们想将用户重定向到仪表板控制器,但在后台,我们想运行

  1. 构建网络
  2. 查找匹配
  3. 发电子邮件

我不知道如何在后台运行任何任务。所以我在想也许我可以编写一个shell脚本,一个接一个地调用这些函数。
我们将通过 Codeigniter 调用此脚本并传递 UserId。
然后此脚本将调用各个函数并将 userId 传递给这些函数。

谁能告诉我

  1. 如果这是正确的方法
  2. 它是如何完成的(这种方式或任何其他方式)
4

1 回答 1

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
}

希望有帮助。

于 2013-03-12T20:32:53.273 回答