php 开始线程,PHP中的线程?

在PHP(Zend框架)中,用户A发送大量电子邮件导致执行时间过长。为了解决这个问题,可以采用类似Java的多线程概念,但PHP本身不支持线程。一种解决方案是使用队列,将邮件发送任务存储起来,然后通过定时任务(cronjob)以一定间隔处理队列,从而避免阻塞主线程。这种方法需要注意确保邮件发送和队列管理的正确同步,以防止数据丢失或错误。
摘要由CSDN通过智能技术生成

我正在使用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值