一尘不染

PHP中的线程?

php

我正在使用zend创建一个Web应用程序,在这里我创建了一个接口,用户A可以从该接口向多个用户发送电子邮件,并且效果很好,但是由于用户A等待太多,这会降低执行时间“已确认的回复”(将在电子邮件发送后显示。)

在Java中,我们可以通过“线程”执行该任务(发送电子邮件),并且不会减慢其余应用程序的速度。

与Java一样,PHP / Zend中是否有任何技术可以用来划分我们的任务,这可能会花费很多时间,例如:发送电子邮件。


阅读 228

收藏
2020-05-26

共1个答案

一尘不染

编辑(感谢@Efazati,这个方向似乎有了新的发展)

http://php.net/manual/en/book.pthreads.php
注意:(从这里底部):

pthreads曾经是并且现在是一个效果很好的实验。它的任何限制或功能可能随时更改;[…]

/编辑

PHP中没有线程!

解决方法
是存储作业在队列(说行与电子邮件的表),并有一个cronjob打电话给你的PHP脚本在给定的时间间隔(比如2分钟),轮询工作。当作业存在时,获取一些作业(取决于您的php的安装超时时间)并发送电子邮件。

推迟执行的主要思想是:

  • 主脚本在队列中添加作业
  • cron脚本将它们分成小块发送

陷阱:

  • 确保您不发送电子邮件而不将其从队列中删除(最坏的情况是,如果用户每隔2分钟收到一些垃圾邮件…)
  • 确保在不先执行作业的情况下不要删除作业…
  • 使用分数算法处理退回电子邮件
2020-05-26