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脚本你需要想办法保证它长时间正常工作。
关于很多脚本同时运行,这说明你未作任何处理导致的。很多办法可以解决这个问题
相关问答:
C/C++ code:
char Time="2009-9-23";
FILE *fpOut=fopen("1.txt","w+");
if(fpOut==NULL)
return ;
fwr ......
为什么我 ioctl(fd,I2C_SLAVE,0x50) 正确,而将0x50改成其他地址都出错?
是不是每增加一个I2C器件,要修改内核代码?
。。。自己解决了。。不同I2C地址,要重新open。。
不过也谢谢楼上的,送分了
......
熟悉Linux,C/C++,有一年的工作经验,请问在上海能拿多少?
我sz的
等sh的回答
关注
一年的工作经验的人,根据你的学校,和学历来看.
我一个实验室的学长,上海,做LINUX驱动开发,2年 6000/月,实到手56 ......
出现这个错误。不知道是我代码的问题还是服务器的问题。
javax.servlet.ServletException: unable to create new native thread
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageConte ......