2017-02-08 3 views
1

aufrufen Mein System muss E-Mail an viele Benutzer senden, und es braucht wirklich Zeit, um viele Benutzer zu senden. Ich möchte nicht, dass Benutzer diese Zeit warten.wie Funktion im Hintergrund codeigniter

_send_mail Funktionen sind in verschiedenen Controller-Datei pro Zweck. Gibt es eine Möglichkeit, E-Mails im Hintergrund zu versenden?

+0

Verwenden Sie Cron, um E-Mails zu senden. – shafiq

+0

Sie können Crons zum Senden von E-Mails im Hintergrund verwenden. –

+0

Studie über 'Gearman' –

Antwort

1

In diesem Fall können Sie eine Teilantwort zurücksenden, bevor Sie Ihre E-Mail senden. So erhalten Sie eine Antwort, um weiter zu gehen und Ihr E-Mail-Versandprozess wird im Hintergrund fortgesetzt.

Um dies zu tun, eine Funktion erstellen, die eine Partition Antwort wie diese

function partialResponse() 
    { 
     $response=array(); 
     ignore_user_abort(true); 
     ob_start(); 
     echo json_encode($response); 
     header("Status: 200"); 
     header($_SERVER["SERVER_PROTOCOL"] . " 200 Ok"); 
     header("Content-Type: application/json"); 
     header('Content-Length: '.ob_get_length()); 
     ob_end_flush(); 
     ob_flush(); 
     flush(); 
    } 

und rufen Sie diese Funktion werfen, bevor E-Mail zu senden

$this->partialResponse(); 

nach diesem tun, was Sie tun möchten, also schicken die E-Mail

+0

Großartig es funktioniert; –