PHP中的线程?

PHP*_*ari 29 php multithreading zend-framework

我正在使用zend创建一个Web应用程序,在这里我创建了一个接口,用户A可以从该接口向多个用户发送电子邮件并且它工作正常,但它会缩短执行时间,因为用户A等待太多"已确认的回复"(将在电子邮件发送后显示).

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

在PHP/Zend中是否有任何技术就像在Java中一样,我们可以将我们的任务分开,这可能需要很长时间,例如:发送电子邮件.

cly*_*yfe 41

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

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

pthreads是,并且是一个非常好的结果的实验​​.其任何限制或功能可能随时发生变化; [...]

/编辑

PHP中没有线程!

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

推迟执行的主要思想:

  • 主脚本在队列中添加作业
  • cron脚本以微小的片段发送它们

陷阱:

  • 确保你不发送电子邮件而不从队列中删除(最坏的情况是如果用户在2分钟间隔内解决了一些垃圾邮件......)
  • 确保不先删除作业而不先执行它...
  • 使用分数算法处理弹出电子邮件


Dou*_*dek 5

您可以考虑使用多个进程,例如使用fork.他们之间的沟通并不像线程那么简单(但是,它也不会带来所有的陷阱),但是如果你只是发送电子邮件,那么可能没有必要进行多少沟通,如果在所有.