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