當程式執行**郵箱的時候,會出現等待程式反饋時間太長 這對於使用者體驗來說是很不好的,使用者大多會在程式沒有執行完就關閉程式,這樣傳送郵件也會中斷,所以我們的解決思路應該是用非同步去執行發郵件的過程。
一、建立乙個連線使用者操作頁面和執行發件的方法:
$timeout = 30; //連線超時時間(s)
$fp = @fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp) {
return '連線失敗';
if ($errno || !$fp) {
return $errstr;
stream_set_blocking($fp,0); //非阻塞
stream_set_timeout($fp, 1);//響應超時時間(s)
二、使用者操作方法 傳遞引數頁面
/*呼叫方法*/
echo '傳送成功'; /*提示使用者傳送成功*/
三、傳送郵件
public function emails(){
set_time_limit(0);/*設定程式執行時間沒有限制防止執行超時*/
ignore_user_abort(true);//設定與客戶機斷開是否會終止執行
$data=i('post.');
$email='';
$sendtitle="郵件標題";
$sendinfo='郵件內容';
$send=array(
'title'=>$sendtitle,
'detail'=>$sendinfo,
$mail= new service\sendemailservice();
foreach ($data as $k => $v) {
$email.=$v.'|';
$tomail=$v;
$info=$mail->sendemail($send,$tomail);
/*執行傳送郵箱*/
$log_name = "public/notify_url.log"; //log檔案路徑
$this>log_result($log_name,$email.date(time(),'h:i:s').';');
/*記錄一下日誌看程式是否執行發件*/
使用者執行結果(以上是測試)
日誌檢視
php實現短信群發
近期根據客戶的需求做了 簡訊和郵件的功能,做一下總結吧 簡訊首先需要有第三方的介面,這些服務商有很多的,我用的是客戶已經給提供的資料介面,用起來還是挺不錯的,在這裡就不打廣告了,總之第三方的服務商會給乙個請求位址和請求的賬號和密碼,第三方的api還是會很詳細的,在這裡我就介紹一下,在我們拿到第三方的...
PHP中的類 郵件群發
linuxaidwing 本類可以用與於email的 測試的環境是linux,系統需要安裝sendmail才能使用 if defined mail class defined else 定義抄送名單 if is array cclist sizeof cclist elseif cclist 定義密...
PHP 版 群發紅包演算法
面試中的乙個問題,當時在紙上用偽 描述了下實現的原理.回來後用 實現了下.有不完善或需要改進的地方,歡迎拍磚 fwrite stdout,請輸入紅包金額 money fgets stdin 0 if is numeric money money 0.01 echo 紅包金額為 money n fwr...