2015-09-15 53 views
0

我想執行這些功能時,按鈕的用戶點擊,但我想執行$model->user->email ? $model->sendUserMail(): "";在後臺異步功能,而作爲點擊發生 其他功能將執行這裏是我的代碼如何異步調用一個函數在PHP

if (isset($_POST['create_send'])) { 
    if ($model->save()) { 
     $model->order_id = strtotime(date("Y-m-d H:i:s")) + '' + $model->id; 

     // send mail 
     $model->sendMail(); 

     //send sms 
     $messages = $model->sendSMSMessage($model); 

     // create booking history 
     $model->createBookingHistory($model , $messages);      

     $model->user->email ? $model->sendUserMail(): ""; 

     if($model->booking_stage != 'inprogress'){ 
      $this->sendPushToSeller($model); 
     } 

     $model->update(); 

     $this->redirect(array('index', 'id' => $model->id)); 
    } 
} 
+0

所以,'$ model-> user-> email? $ model-> sendUserMail():'不受點擊約束或我誤解了什麼? - 如果不是,用cronjob調用它或許 – Epodax

+2

** A **同步** J ** avascript ** A ** nd ** X ** ml –

+0

讓我清楚,當用戶點擊我需要執行這些除了這個指定的函數之外的所有函數,我希望異步執行該函數(在後臺),並且不會被點擊約束 –

回答

1

沒有什麼比標準PHP中的異步任務。你可以安裝pthreads,或者你必須使用某種隊列。 與隊列會工作像:

  • 創建郵件發送-工作
  • 推說工作到隊列中(例如數據庫)
  • 第三方PROGRAMM(例如一個cronjob )必須輪詢隊列並執行任務(發送郵件),如果有一些

或者像@Alan Machado說的那樣,使用AJAX。因此您的頁面可以加載,並且按鈕向發送郵件的服務器發送AJAX請求。

0

您爲yii添加了標籤,因此可能考慮使用RESTful API擴展,並研究AJAX和CRUD。這取決於你想要走多遠。但是我覺得使用yii的RESTful API是談到AJAX時最好的方法。