作者rock810 ()
看板PHP
标题Re: [请益] 大量发信後端执行
时间Wed Jan 16 14:15:12 2013
首先感谢cleanwind大以及pobie大
再抓紧时间查完资料後,这几天终於有空档开始实作
帮自己自问自答一下
: 不知有没有解答到你的问题 @@ 参考一下罗~
: ※ 引述《rock810 ()》之铭言:
: : 各位好
: : 小弟是php的新手,最近再帮某单位做大量发信的工作(EDM)
: : 目前是托别人管理MAIL SERVER的福,大量寄信都没什麽问题
: : 只是跑上万笔的回圈寄信,一次一封,要等大约20分钟网页才会跑完
: : (也不知道这样写好不好)
: : 使用者就是要开着那个页面等个20分钟
: : 我知道有的系统是可以在使用者执行後,他可以关掉浏览器去做别的事情
: : 剩下的伺服器会帮忙完成
以上需求,只要一开始使用「ignore_user_abort(true);」就能解决
可以在执行发送mail回圈後,关掉浏览器,伺服器那边会接着完成
我这个案例使用ignore_user_abort(true);相当单纯
但也有查到使用不慎,很容易浪费伺服器资源的相关资料
几位前辈也有提到要配合set_time_limit,因为PHP预设只让程式执行30秒
没设定的话超过30秒就会中断
: : 现在想实作这一点
: : 找了一些资料,但是很杂很乱,没有头绪
: : 像是EXEC、排程等等
: : 能不能请版上先进给点方向
: : 我现在乱想一个是用 PHP 产 MAIL LIST 在用 EXEC 去执行 VBS(自己写一个VBS寄信)
: : 只是这样乱凑感觉起来很鸟(没试过也不知道能不能行)...
: : 我的环境是WINDOWS SERVER 2008 用PHP的 MAIL() 在寄信
再来是如果想利用排程来寄信,可以按照pobie大的建议
先单独写一段发送信件的php
然後再写.bat档的时候,直接使用「php x:\xx\cron_send.php」
.bat其实就是.txt档改副档名为.bat即可,通常不会有什麽问题(除非有编码问题)
再利用win排程去执行
整体而言不难实作,也可能是因为我的需求比较单纯
如果有什麽其他需求或变化,欢迎一起讨论
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.230.81.15
1F:推 FntsrSwl:用心回馈 01/17 02:50
2F:→ tyf99:php预设只跑30秒,若没用set_time_limit,可能没寄完就终止 01/17 04:35
3F:→ rock810:感谢楼上提醒,不过我是直接改php.ini,整个冒险 01/17 17:38
4F:推 AreTheyYou:我想问~如果程式在背景跑 临时想关掉要怎麽关 ? 01/17 23:54
5F:→ rock810:楼上,根据我以前的经验,重启阿帕契是大绝招 01/19 09:32
6F:→ tyf99:一开始就getmypid,存档。中断或终止时读取pid kill掉 01/19 09:38
7F:→ tyf99:存档记得清掉 01/19 09:46
8F:→ dlikeayu:linux的hostname没设好的话,一封信给php的mail()也会寄 01/22 01:02
9F:→ dlikeayu:很久喔,有一部份是mis的功,设好之後每封几乎是秒寄 01/22 01:02
※ 编辑: rock810 (36.230.81.15 台湾), 03/14/2021 22:14:42