PHP 中的线程?

2022-08-30 15:15:21

我正在使用zend创建一个Web应用程序,在这里我创建了一个界面,user-A可以从中向多个用户发送电子邮件,并且它工作得很好,但它减慢了执行时间,因为user-A等待太多“确认响应”(将在电子邮件发送后显示)。

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

PHP / Zend中是否有任何技术,就像在Java中一样,我们可以划分可能需要花费大量时间的任务,例如:发送电子邮件。


答案 1

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

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

pthreads过去是,现在也是,一个实验,结果相当不错。其任何限制或功能可能随时更改;[...]

/编辑

PHP 中没有线程!

解决方法是将作业存储在队列中(例如带有电子邮件的表中的行),并让cronjob以给定的时间间隔(例如2分钟)调用您的php脚本并轮询作业。当作业存在时,获取一些(取决于您的php的安装超时)并发送电子邮件。

推迟执行的主要思想:

  • 主脚本在队列中添加作业
  • cron脚本将它们以小切片形式发送

陷阱:

  • 确保u不要在不从队列中删除的情况下发送电子邮件(最坏的情况是用户每隔2分钟收到一些垃圾邮件......
  • 确保不要在没有先执行作业的情况下删除作业...
  • 使用分数算法处理退回邮件

答案 2

您可以考虑使用多个进程,例如使用fork。它们之间的通信不会像线程那样简单(但是,它也不会带来所有的陷阱),但是如果您只是发送电子邮件,则可能没有必要进行太多通信,如果有的话。


推荐