2010年7月6日 星期二

php 大量發送email的小技巧

相信許多人在寫大量發信的時候, 都會要求使用者不能關閉正在發信的視窗, 因為關閉視窗發email的機制就會中斷, 或者也有人提出另外一種作法就是利用cli的方式執行 在linux上丟到background處理,在windows內用at的指令下排程! 不過事實上不必那麼麻煩! 只要利用php的ignore-user-abort加上set_time_limit來執行即可 這樣處理即使user關掉電腦,php還是會繼續執行下去的 寫個簡單的範例好了 ```php //讓程式執行到結束為止 set_time_limit(0); //瀏覽器關閉後繼續執行 ignore_user_abort(true); sleep(15); touch("/test.txt"); ``` 執行後15秒可以到根目錄下看是否建立test.txt這個檔案(記得要開放寫入權限) ※利用這個方式,可能會發現Browser無法再瀏覽該網站的任何一個頁面, 這個在之前有提過Session的問題,記得執行session_commit就可以避免此問題了

3 則留言:

  1. 你好,

    如果想停止這個程式,要怎樣做?
    如果由database loop mail,

    sleep() 應該放在那一個位置?

    回覆刪除
  2. 我不太懂你所謂的database loop mail
    但如果是由系統來處理這件事情的話!
    你可以將執行的pid記錄進單一檔案內
    再依pid去砍process

    回覆刪除
  3. 大大這EMAIL大量發信程式 該怎麼寫呢

    請大大指教

    回覆刪除