2

我的页面执行的脚本需要相对较长的时间才能完成。我想让用户可以提交信息,立即回显“完成”,并允许用户在脚本继续执行时退出页面。我怎样才能做到这一点?

4

3 回答 3

2

电子邮件自然很慢。我建议您为您的电子邮件使用工作队列。你应该看看

使用这些解决方案,您可以将慢速任务排队并继续向您的用户显示有效信息和进度。

示例客户端

$client= new GearmanClient();
$client->addServer();
$client->do("email", json_encode(array("A@yahoo.com","Hello World","This is your first Mail")));
echo "Welcome To XYZ" ;

服务器

$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction("email", "sendMail");
while ( $worker->work() );

function sendMail($mail) {
    list($to, $subject, $message) = json_decode($mail);
    return mail($to, $subject, $message);
}
于 2012-10-15T23:37:42.383 回答
2

使用cron。在您的页面上创建一个电子邮件任务并保存在 db 或 fs 中 - 没关系。创建一个每 n 分钟运行一次的脚本,该脚本获取电子邮件任务并执行它们。

不幸的是,您的主机可能没有 cron 支持...

于 2012-10-15T23:33:10.677 回答
1

我的建议是将所有信息提交到表格行或类似的数据结构中,然后每隔几分钟运行一次 cronjob 以遍历每一行并根据已提交的信息运行脚本。

恐怕这会有点复杂,但它会立即释放用户(一旦原始信息存储到数据库中)

于 2012-10-15T23:33:23.450 回答