如何安排电子邮件的发送时间
使用PHP,我有一个查询,可以通过DB进行查询,以寻找在一天中的某些时候使用提醒触发器的待处理任务.我有一个cronjob每10分钟运行一次,并检查DB是否在接下来的10分钟内具有" REMIND_ME"字段的所有行.如果确实找到了一些东西,那么用任务信息排队电子邮件的最佳方法是什么? 我想我需要某种消息队列系统,但是电子邮件部分如何工作?我是否需要另一个每分钟运行的cronjob来检查队列系统? 解决方案 如果您想执行邮件队列系统,建议您看看梨: :mail_queue 和关联的教程. 10分钟的脚本运行时,您将能够排队邮件,并通过CRON工作每10分钟将邮件队列清空.您也可以在每分钟清空邮件队列,并在有问题的邮件中实现"不要在队列之前发送"时间. 另外,您可以每分钟运行检查脚本,以检查提醒在过去十分钟内到期的项目,并立即发送邮件,这消除了对队列系统的需求. 这可以通过您上次发送警报的记录来实现(因此您不会错过任何问题,也不会两次发送警报) 希望会
0 2023-05-30
编程技术问答社区
从 RabbitMQ 队列中检索消息
我希望将RabbitMQ实现到我的PHP应用程序中,并正在使用PHP-AMQP扩展程序.我唯一的问题是,我如何轻松查询返回PHP中队列的内容? PHP-AMQP似乎无法使我这样做.如果我说错了,请在这里帮助我:) 解决方案 詹姆斯,您能在Rabbitmq-Discuss上问这个问题吗?您的问题涉及"查询"队列以获取消息意味着什么.在RabbitMQ中,您会消耗队列中的消息,并使用队列绑定进行过滤.看看这个介绍 - 欢呼 Alexis 兔子 其他解决方案 如果您需要知道队列中有多少条消息,则可以在声明队列时获得此信息,或者使用basic.get来检索单个消息.通常,消息的接收者将使用basic.consume,他们将不知道有多少消息在等待. 其他解决方案 这样的问题更多地是关于排队数据类型 和一般AMQP概念. 在AMQP中(在RabbitMQ中,与AMQP兼容的代理)队列是典型的FIFO队列.队列不是通常用于任意项目访问的数据类型的类型,此时兔子
0 2023-05-30
编程技术问答社区
PHP中的消息队列和工作者系统的有效架构?
我正在尝试将我想在PHP应用中实现的消息队列模型和作业缠住. 我的目标是卸载需要发送到多个第三方API的消息/数据,因此访问它们不会减慢客户端.因此,将数据发送到消息队列是理想的. 我考虑使用Just Gearman持有MQ/Jobs,但我想使用诸如SQS或Rackspace Cloud cloud queues之类的云队列服务,因此我不必管理消息. 这是我认为我应该做的事情的图: 问题: 我的工人,他们都必须用PHP写下,他们都必须轮询云队列服务吗?这可能会变得昂贵,尤其是当您有很多工人时. 我在想可能有1名仅用于轮询队列的工人,如果有消息,请通知其他工人他们有工作,我只需要使用supervisord在线上保持这1名工人?这种投票方法比使用能够通知的MQ更好吗?我应该如何对MQ进行一次调查,或者每秒或尽可能快地进行调查?如果我看到投票人员放慢脚步,请增加投票人员? 我还在考虑为所有消息有一个队列,然后根据需要处理的位置将消息分配给其他云MQ的工
0 2023-05-30
编程技术问答社区
如何用php设置beanstalkd
最近,我一直在研究使用PHP的Beanstalkd的使用.我学到了很多东西,但是有关服务器上的设置等有一些问题. . 这是我看到它的工作方式: 我在Ubuntu服务器上安装Beanstalkd和任何依赖关系(例如Libevent).然后,我启动beanstalkd守护程序(基本上应该始终运行). 我网站中的某个地方(例如用户执行某些操作等)任务被添加到beanstalkd队列内的各种管子中. 我有一个bash脚本(例如以下一个),该脚本是作为戴蒙(Deamon)运行的,基本上是执行PHP脚本. #!/bin/sh php worker.php 4)工作脚本将具有类似的东西来执行排队的任务: while(1) { $job = $this->pheanstalk->watch('test')->ignore('default')->reserve(); $job_encoded = json_decode($job->getData(), fals
0 2023-05-30
编程技术问答社区
用PHP进行异步处理,每个作业一个工作者
考虑一个PHP Web应用程序,其目的是接受用户请求以启动通用异步作业,然后创建一个工作过程/线程来运行该作业.这些作业并不是特别密集的CPU或内存密集,而是期望经常阻止I/O呼叫.每秒不应启动不超过一两个工作,但是由于长期长时间的工作可能会一次运行. . 因此,作业并行运行至关重要.另外,必须由负责杀死悬挂工人的经理守护程序监视每个工作 实现这样的系统的最佳方法是什么?我可以看到: 从经理那里派遣工人 - 这似乎是最低级别的选择,我必须自己实施监视系统. Apache是​​Web服务器,因此看来此选项需要通过FastCGI启动任何PHP工人. 使用某种作业/消息队列. (Gearman,Beanstalkd,RabbitMQ等) - 最初,这似乎是显而易见的选择.经过一些研究,我对所有选项有些困惑.例如,Gearman看起来像是为有固定工人库的庞大分布式系统而设计的...所以我不知道这是否适合我需要的东西(每份工作一个工人). 解决方案 好吧,如果您在Linu
0 2023-05-27
编程技术问答社区
这是使用消息队列的正确方法吗?
我是消息队列的新手,现在我正在我的Linux服务器上使用 ZeroMQ .我正在使用 PHP 来编写客户端和服务器.这主要用于处理推送通知. 我正在使用基本 a> - REP REP 单个i/o-threaded ZMQContext 实例上的模式. 这是最小化 zeromqServer.php 代码: include("someFile.php"); $context = new ZMQContext(1); // Socket to talk to clients $responder = new ZMQSocket($context, ZMQ::SOCKET_REP); $responder->bind("tcp://*:5555"); while (true) { $request = $responder->recv(); printf ("Received request: [%s]\n", $request); // -
0 2023-05-27
编程技术问答社区
PHP中的异步处理或消息队列(CakePHP)
我正在CakePHP中建立一个网站,该网站处理通过XML-RPC API上传的文件和Web前端.需要由Clamav扫描文件,需要生成缩略图,等等.所有资源密集型工作都需要一些时间,用户不必等待.因此,我正在关注PHP的异步处理,尤其是CakePHP. 我遇到多任务>对于看起来很有希望的CakePHP.我还遇到了各种消息队列实现,例如 dropr 和 beanstalkd .当然,我还需要某种背景过程,可能是使用某种蛋糕壳来实施的.我看到了使用 php_fork 实现多读PHP DAEMON. 我需要一些有关如何以最佳方式将所有这些零件融合在一起的建议. 有一个长期以来用PHP写的守护程序是个好主意吗?我应该注意什么? 外部消息队列实现的优势是什么?多任务插件不使用外部消息队列.它使用MySQL表来存储任务. 我应该使用什么消息队列? dropr? beanstalkd?其他? 我应该如何实施后端处理器?是一个叉子的php守护程序是个好主意还是只是要麻烦? 我
0 2023-05-26
编程技术问答社区
对排队的消息进行格式化的最佳方式是什么?
我最近一直在阅读消息排队,我想为我的应用程序实现一个简单,可扩展的系统.虽然在那里设置MQ系统的主题有很多好的信息,但我找不到很多有关实际实施的信息. 我正在寻找有关如何正确格式化队列格式的模式和最佳实践,以及在PHP中执行作业的方法.我应该使用JSON,序列化对象,文本,URL或XML吗?我应该发送什么信息?具有switch($job['command']) {}(或类似的东西)的工人是要走的方式,还是有任何已建立的模式来实施工人? 非常感谢! 解决方案 您可以在PHP中选择以下任何MQ实现,因此您不必自己滚动,并且可以查看他们的Sourcecode来了解其实现.为了进行一般整合,请查看 enterprise集成模式上的ActiveMQ页面/p> beanstalkd的PHP客户库. BeanStalk允许PHP开发人员使用Beanstalkd内存Workqueue Server( ). http://kr.github.com/beanstalkd/
0 2023-05-26
编程技术问答社区
Perl、PHP、Python中的消息队列
我正在处理一个包含消息队列概念的项目.现在,该项目处于PHP中,并且正在延迟发送或发送邮件的消息.因此,我建议在Perl或Python脚本中开发一个消息队列.您能建议哪个最好的是PHP,Perl或Python? 解决方案 可能的解决方案可能是使用 gearman 作为队列: 您的PHP项目将作为后台工作发送消息;并完成 Gearman会向工人派遣这些消息 工人将处理工作 - 做可能需要时间的事情 另外一个优势:您需要几台服务器来处理大量工作的那一天,您已经拥有所需的东西:Gearman将为您处理负载平衡. 其他解决方案 PHP完全足够实现简单的消息队列.因此,如果您当前的代码导致延迟,则是由于您的设计,而不是因为PHP的某些限制.切换到其他语言不会帮助您.不良代码是错误的代码. 您可能要做的最好的事情就是使用现有消息队列. Pascal推荐 Gearman .我曾与(非常喜欢) beanstalkd .如果您需要大量的功能,请查看 apachemq
0 2023-05-25
编程技术问答社区
对于单机来说,最快的Perl IPC/消息队列是什么?
我正在研究一个(主要是)Perl项目,并希望使用消息队列彼此隔离过程.我有这样的工作流程: 输入 - >接收器 - >处理器 - >输出(S) 我需要处理数百件交易/秒,因此请加快我最大的动力.这种设置的最快消息队列系统是什么? 我的所有流程都在同一台计算机上运行,​​因此,如果这意味着更好的性能,我可以使用Unix插座或临时文件. 到目前为止,我的两个最爱是IPC :: Dirqueue和Beanstalkd.任何人都有两者都有经验,并且可以得出结论哪个更快? 还有什么可在单台计算机上成为超级快速工作队列? 解决方案 我不知道IPC :: Dirqueue或Beanstalkd,但是我在
4 2023-05-24
编程技术问答社区
叉子还是不叉子?
我正在重新开发一个系统,该系统将通过HTTP发送消息到许多供应商之一.原件是Perl脚本,重新开发也可能使用Perl. 在旧系统中,有许多同时运行的perl脚本,每个供应商五个.当将消息放入数据库中时,选择了一个随机线程号(1-5),并选择供应商,以确保在避免锁定表/行的同时,没有对两次消息进行处理.此外,数据库中还有一个"公平的队列位置"字段,以确保发出大的消息不会延迟发送大的消息. 有时每分钟只会有几条消息,但在其他时候,可能会有数十万条消息.在我看来,让所有脚本一直在运行和检查消息的所有脚本似乎都像是一种浪费,所以我正在尝试是否有更好的方法来解决,或者是否可以接受. 我现在的想法在于一个脚本运行和叉子的脚本的想法,并根据需要的数量(最多限制),但我不确定如何最好地实施它使每条消息仅处理一次,而在维护公平排队的同时. 我现在最好的猜测是,父脚本更新了DB,以指示哪个子进程应处理它,但是我担心这最终会比原始方法效率低.我几乎没有编写分叉代码的经验(上次我大约在15年
2 2023-05-24
编程技术问答社区
使用ReceiveById的MSMQ性能非常糟糕
每秒只有20个消息!这就是我所得到的!这是从队列中窥视50条消息的代码,并使用receedById并行接收它们.队列中的消息总数为500.我也测试了其他数字.但是最高限制是每秒20个消息!我是完全挡住的地方吗? 编辑1: 1-我需要队列才能恢复.但是有趣的部分是,即使我将可恢复的选项设置为false;仍然是最高限制是20消息/秒 2-我在这里被迫使用MSMQ,因为涉及一些旧应用.但是,如果此代码正确,并且此前20个限制确实存在,我可以说服组切换.因此,真正欢迎任何建议更换MSMQ的建议(基于实际经验)(请注意,在任何类型的失败时我们都需要持续存在消息). 3-我已经将线程池中的线程数设置为高数字,以防万一,但实际上在此代码中会导致100-200个线程.我测试了从50到10000的不同数字,没有差异. 4-在每个任务中,创建了一个新的MessageQueue,因为RecedById不是线程安全. 5-正如代码中可以看到的消息大小非常低;这只是一个字符串加
0 2023-05-23
编程技术问答社区
为什么通过共享内存的通信比通过队列的通信慢得多?
我在最近有四个硬件和八个逻辑CPU的Vintage Apple MacBook Pro上使用Python 2.7.5;即Sysctl实用程序给出: $ sysctl hw.physicalcpu hw.physicalcpu: 4 $ sysctl hw.logicalcpu hw.logicalcpu: 8 我需要在大型的1-D列表或数组上执行一些相当复杂的处理,然后将结果保存为中间输出,该输出将在我应用程序中随后的计算中再次使用.我的问题的结构自然而然地使并行化,所以我认为我会尝试使用Python的多处理模块将1D阵列细分为几片(4件或8件,我还不确定),并行计算,然后将结果输出重新组合到其最终格式中.我正在尝试决定是使用multiprocessing.Queue()(消息队列)还是multiprocessing.Array()(共享内存)作为我首选的机制,用于传达从子过程中返回到主要父程流程中的结果计算,我一直在尝试几个"玩具"模型,以确保我了解多处理模块的实际工作方式.
0 2023-05-23
编程技术问答社区
低延迟、大规模的消息排队
我正在重新考虑Facebook应用程序和云计算时代的大型多人游戏. 假设我要在现有的开放协议之上构建一些东西,我想同时服务1,000,000个玩家,只是为了解决问题. 假设每个播放器都有一个传入的消息队列(用于聊天和what't),并且平均有一个传入的消息队列(guilds,guilds,guilds,goom,"区域,实例,拍卖"),以便我们有2,000,000个队列.玩家一次听1-10个队列.每个队列平均每秒可能有1条消息,但是某些队列的速率和更高的听众数量(例如,对于级别实例的"实体位置"队列).让我们假设不超过100毫秒的系统排队延迟,这对于以动作为导向的游戏可以(但诸如Quake或Unreal Tournament之类的游戏). 在其他系统中,我知道在一个1U或刀片盒上为10,000个用户提供服务是一个合理的期望(假设没有其他昂贵的事情,例如物理模拟或Whatot). so,使用横梁群集系统,客户端连接到连接网关,而连接网关又连接到消息队列服务器,我们每
0 2023-05-23
编程技术问答社区
在ISR(中断服务例程)中类似于信号的同步化
我有一个队列,当发生不同的中断时,将调用队列的put和拉功能.在这种情况下,有没有办法防止比赛状况? 虽然我们无法在中断服务例程中等待信号量,这是创建类似功能的最佳方法. 我们使用Zynq FPGA的ARM-Cortex A5处理器来开发代码. 解决方案 假设每个中断会导致处理器的"中断"状态打开,并且假设您正在处理的中断具有相同的优先级(也就是说,不能中断执行其他),那么已经没有种族条件,您的ISR可以访问共享队列. (当发生中断时,处理器进入中断模式,将所有寄存器推到堆栈上,跳到ISR入口点并继续执行此处.一旦完成ISR," IRET"指令将逆转.条目.此简单描述可以在不同的处理器和平台中以不同的方式实现.)
10 2023-05-23
编程技术问答社区
如何从队列中并行地读取消息?
情况 我们有一个消息队列.我们想并行处理消息并限制同时处理的消息的数量. 我们下面的试验代码会并行处理消息,但是只有在上一个过程完成后才启动一批新的流程.我们想重新启动任务完成. 换句话说:只要消息队列不是空的,任务的最大数量应始终处于活动状态. 试用代码 static string queue = @".\Private$\concurrenttest"; private static void Process(CancellationToken token) { Task.Factory.StartNew(async () => { while (true) { IEnumerable consumerTasks = ConsumerTasks(); await Task.WhenAll(consumerTasks);
0 2023-05-19
编程技术问答社区
为什么操作系统会限制文件描述符?
我尽力研究实现消息队列服务器的最佳方法之后,问这个问题.为什么操作系统限制了一个过程的打开文件描述符的数量,并且全局系统可以拥有? 我当前的服务器实现使用Zeromq,并为每个连接的Websocket客户端打开一个订户套接字.显然,单个过程只能将客户端处理到FD的极限. 当我研究主题时,我发现了很多有关如何将系统限制提高到64K FD的水平的信息,但是它从未提及它如何影响系统性能以及为什么它是1K且较低的开始? 我当前的方法是尝试使用自己的循环中的Coroutine以及所有客户端及其订阅渠道的地图向所有客户发送消息传递.但是我只想听听有关文件描述符限制的可靠答案,以及它们如何影响试图在每个客户层并具有持久连接的应用程序的应用程序? 解决方案 可能是因为文件描述符值是文件描述符表中的索引.因此,可能的文件描述符的数量将确定表的大小.普通用户不希望文件描述符表使用的一半RAM可以处理数百万个文件描述符. 其他解决方案 当您有大量势文件描述符时,有某些操作会放慢速度.一个示例是
0 2023-05-11
编程技术问答社区
JMS Websocket延迟消息传递
此应用程序将消息从数据库事件接收并转发到客户端应用程序.客户浏览器具有Web插座会话时立即发送消息. 但是,当不存在Web套接字会话,JMSProducer将发送消息到QueuesEnderSessionBean中的目标" JMS/NOTIFICATIONQUEUE"时,该消息会立即在NotificitifieDeneendpoint中消耗.这不是我的意图. 我的目的是让队列保留消息,直到用户连接到NotificationEndpoint.如果用户未连接到NotificitificendEndPoint,我认为没有为接收消息的NotificitifieNtEndPoint的实例. 如何延迟从队列中消耗消息的JMSconsumer? 概述-Tomee Plus 8.0.0 -m1项目 应用程序在Notificationservlet中收到通知 httpservletrequest 字符串消息被列入Notificationservlet 将QueueSend
18 2023-05-07
编程技术问答社区
通过MSMQ发送文件
在零售场景中,每个商店在一天结束时将其日常交易报告给后端系统.如今,使用FTP将包括每日交易和其他一些元信息组成的文件从商店转移到后端.我目前正在调查用其他东西替换FTP.已建议将MSMQ作为另一种运输机制.因此,我的问题是,我们是否需要编写一个自定义的Windows服务,将每日交易文件贴在消息对象中并在途中发送它,或者在MSMQ中有任何盒子机制来处理此操作? 另外,由于我们要传输的文件可以到达5-6 MB的大型商店,我们是否应该排除MSMQ?在这种情况下,我们还应该研究其他建议的技术吗? 欢呼! 解决方案 nservicebus在这种情况下为MSMQ提供了一个很好的抽象.您将获得MSMQ的可靠消息传递方面,以及一个非常好的编程模型,用于定义您的消息. MSMQ仅限于4MB消息大小,但是您可以通过两种方式在NserviceBus中处理此问题: nservicebus有一个名为"数据总线"的概念,该概念在您的消息中获取大型附件,并使用另一种方法可靠地传输它们
2 2023-04-28
编程技术问答社区
为什么NServiceBus的OutgoingHeaders是静态的而不是ThreadStatic?
当传出标头是静态时,nservicebus如何保持一致性? 这是否意味着我要为特定消息设置传出标题,它将影响所有其他传出消息,因为它是单身人士? namespace NServiceBus.MessageHeaders { [ComVisible(false)] public class MessageHeaderManager : IMutateOutgoingTransportMessages { private static IDictionary staticOutgoingHeaders = (IDictionary) new Dictionary(); private IUnicastBus bus; [ThreadStatic] private static IDictionary
0 2023-04-28
编程技术问答社区