脚本工作太多,max_execution_time失败

时间:2014-03-21 19:16:17

标签: php email

我在我的网站上添加了新功能。用户以pdf格式上传带有租金收据(约100个用户,100个文件)的档案。 1个文件是~25 kb,孔存档是~2.5-2.7mb。

我写了剧本。脚本保存存档,打开存档,将图像解压缩到另一个文件夹并为每个图像发送电子邮件(发送给每个用户)。这需要时间。我在我的本地服务器(max_execution_time 60)中测试了它,但它失败了,因为脚本工作时间过长。之后我检查了我的托管max_execution_time ......好吧,现在我很伤心。

我有下一个结构atm:

  1. 绘制表格
  2. 使用php(/MM-YYYY\.(zip|rar)格式)上传档案(+所有支票等)
  3. 发出ajax请求,发送月份+年
  4. 在这个脚本上我得到月份+年(所以得到路径)然后我做下一个序列:
    从bd获取用户电子邮件(存档中的文件名为/[1-9][0-9]*\.pdf/(1.pdf,100.pdf,555.pdf等),向附件用户发送电子邮件。
  5. 对我来说,发送带附件的邮件需要时间。我有50-100封邮件。

    1)我如何加速脚本或我如何处理这个问题?

    2)带附件的50封邮件发送得如此之慢可以吗?

    请帮助。谢谢。

    ADD - 时间测试

    14.9609 s。 - 5个文件;
    3.6962 s。 - 1档;
    14.2918 - 4档(第一次尝试);
    14.1198 - 4个文件(第2次尝试);
    35.271 - 10个文件
    35.811 - 10个文件(另一个尝试);

    ADD - 我尝试了另一种方式:许多ajax请求而不是一个

    我改变了发送电子邮件的方法。我在列表的第二项中执行所有操作。在ajax请求的页面中,我只发送电子邮件。结果如下:

    发送1封电子邮件:
    1 e-mail 他的确定

    发送3封电子邮件:
    3 e-mails
    什么? 9.82邮件?为什么不3.5?

    发送10封电子邮件:
    第一封电子邮件10 e-mails
    ??!?!! @#!@%18.16。在我看来,这不能被称为“async'”。为什么需要这么多时间。

    那么:1个ajax请求发送10个电子邮件的页面的时间等于10个ajax请求发送1个电子邮件的页面???

    我认为10个ajax请求将异步发送,工作需要3-4秒。任何人都可以解释一下吗? :(

1 个答案:

答案 0 :(得分:0)

如果您觉得邮件部分是造成延迟的部分,您可以将其分解。

为您设置邮件的cron作业。最小的频率是一分钟。

此外,您可以增加执行时间。 但是,某些Web主机具有严格的策略,并且不会对您有利,具体取决于每个进程的持续时间(我假设这会随着您添加更多用户和文件而增加)以及在24小时内发生的次数。 / p>

我的建议是使用cron作业,只要您确信您的编码有效。

另外,你能否CC或BCC邮件? TBH,我不确定邮件发送时间是否会增加。只是一个小小的想法。