我的页面执行的脚本需要相对较长的时间才能完成。我想这样做,以便用户可以提交信息,立即回显“完成”,并允许用户在脚本继续执行时退出页面。我怎么能这样做?
答案 0 :(得分:2)
使用cron。在您的页面上创建一个电子邮件任务并保存在db或fs中 - 无所谓。创建一个每n分钟运行一次的脚本,用于获取电子邮件任务并执行它们。
不幸的是,您的托管可能没有cron支持......
答案 1 :(得分: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);
}
答案 2 :(得分:1)
我的建议是将所有信息提交到表格行或类似的数据结构中,然后每隔几分钟运行一次cronjob以遍历每一行并根据已提交的信息运行脚本。
这会有点复杂,我担心,但它会立即释放用户(一旦原始信息存储到数据库中)