Linux系统下能否实现以下这个功能
现在的做法是,通过crontab每分钟执行一个php,这个php负责从数据库中取出邮件,然后发送
问题是,如果邮件很多,每分钟执行不完,那会造成很多php进程
能不能实现等这个php执行完了立即启动一个新的?不用crontab
第一种 用crontab,你可以做个数量的限制,例如每分钟发送十个邮件,然后继续每分钟执行这个文件
第二种, 创建两个程序, 一个是执行程序一直死循环的跑着, 去file 另外一个发邮件的程序 如果得到另外一个程序邮件发送成功就执行下一个
第一种 用crontab 配合SH 脚本,如果SH 脚本检测到发邮件的程序进程在运行,表示邮件没发完,则不做任何事,如果没有进程,则表示程序已执行完,启动新进程 再重新开始发邮件
第二程 while(true) + sleep
思路:两个crontab。
A crontab :每分钟执行一个readdb.php,这个php负责从数据库中取出邮件,并存放到一个指定文件mail_list
B crontab :每分钟执行一个sendmail.php,这个php负责去mail_list文件中读取一个邮件地址,发送邮件,然后删除mail_list中的本条记录。
你的需求是把邮件队列中新加入的邮件不断的按一定顺序发送出去是吧?
而触发方式是定时检查?
最简单的方式就是while(true) + sleep
然后发现它缺少守护进程,一但程序终止了工作就停止了。
你之前之所以用crontab就是因为防止它不工作了,不是么:)
其实问题就在于如何保证随时有进程在运行。
不用crontab不是不行,但是作为php脚本你需要想办法保证它长时间正常工作。
关于很多脚本同时运行,这说明你未作任何处理导致的。很多办法可以解决这个问题
相关问答:
我写了一个OCCI的程序,该程序在linux下面运行一切正常,但是同样的代码到AIX下再编译运行就出问题了.而且一次提交数量的不同,报的错也不同.
C/C++ code:
#include <iostream>
#include <occi.h>
u ......
目标:当网络中有数据到达或者超时,程序进入下一次循环。
问题:select()函数不起作用,程序不会在select的地方阻塞一秒,并且当网络上有数据的时候,select的返回值仍然小于0
#include <s ......
请有经验坛友谈谈做C++开发与Linux的关系,就是开发是不是一般都在Linux下进行的之类的话题。
开发可以不再Linux下,但调试要做Linux下。
开发随便,只要是标准C++,Windows下都可以调试
两者都可以~~~
开 ......
为什么我 ioctl(fd,I2C_SLAVE,0x50) 正确,而将0x50改成其他地址都出错?
是不是每增加一个I2C器件,要修改内核代码?
。。。自己解决了。。不同I2C地址,要重新open。。
不过也谢谢楼上的,送分了
......
我在linux下写了个UDP的server和client的代码,
现在出了这样一个问题,
server收到了client的数据,并回复了,但是client一直收不到server回复的内容,,后来我用抓包工具建立了一个server来连接之前的cl ......