我正在使用zend创建一个Web应用程序,在这里我创建了一个接口,用户A可以从该接口向多个用户发送电子邮件.它工作得很好但是它减慢了执行时间,因为用户A对“已确认的响应”(将在电子邮件发送后显示)等待太多.
在Java中有“线程”,通过它我们可以执行该任务(发送电子邮件)&它不会减慢其余的应用程序.
PHP / Zend中是否有任何技术就像在Java中一样,我们可以将我们的任务分开,这可能需要很长时间,例如:发送电子邮件.
解决方法:
编辑(感谢@Efazati,这个方向似乎有新的发展)
pthreads was, and is, an experiment with pretty good results. Any of its limitations or features may change at any time; […]
/编辑
PHP中没有线程!
解决方法是将作业存储在队列中(比如表中包含电子邮件的行),然后让cronjob以给定的间隔(例如2分钟)调用php脚本并轮询作业.当出现的作业取一些(取决于您的PHP的安装超时)并发送电子邮件.
推迟执行的主要思想:
>主脚本在队列中添加作业
> cron脚本以微小的片段发送它们
陷阱:
>确保你不发送电子邮件而不从队列中删除(最糟糕的情况是,如果用户在2分钟间隔内解决了一些垃圾邮件……)
>确保在未先执行任务的情况下不删除作业…
>使用分数算法处理弹出电子邮件
标签:php,multithreading,zend-framework
来源: https://codeday.me/bug/20190916/1807692.html