2017-01-19 2 views
0

Ich mache Projekt in Laravel. Ich möchte Push-Benachrichtigungen zu verschiedenen Zeiten an verschiedene Benutzer senden. Wie kann ich einem Benutzer eine Folgezeit zuweisen, die für jeden Benutzer unterschiedlich sein kann. Ich habe gesucht und erfahren, dass wir das Konzept von Cron-Jobs verwenden können, aber dafür muss ich Cron-Jobs in jeder Minute ausführen, damit ich überprüfen kann, ob es Zeit ist, Push-Benachrichtigungen zu senden oder nicht. Ist es in Ordnung, Cron-Job jede Minute auszuführen? weil ich denke, es wird die Serverlast erhöhen.Was ist der richtige Weg, um geplante Push-Benachrichtigungen zu implementieren?

Kann mir jemand dazu Ratschläge geben, da ich neu in diesem Konzept bin, bekomme ich wirklich nicht, was ich in dieser Situation tun soll.

Antwort

1

Cron-Job ist eine geplante Aufgabe, die Sie in jedem beliebigen Zeitintervall ausführen können. Es ist in Ordnung, es alle 1 Minute abhängig von Ihrer Anforderung auszuführen.

Sie können die Effizienz Ihres Cron in einer solchen Situation erhöhen.

Sie führen die Datei -> überprüfen, um zu sehen, haben Sie Benachrichtigungen zu senden -> Wenn Sie Ihre Logik fortgesetzt haben.

Wenn Sie einfach exit;

Bedeutung kann nicht alles haben, wird es nur eine gewisse Last auf dem Server geben, wenn Sie etwas zu tun haben (was wir tun sollten). Das Ausführen eines Crons pro Minute führt nicht zu einer enormen Serverlast (wiederum hängt davon ab, wie gut Sie Ihre Code/DB-Abfragen strukturieren, um die Nutzung zu optimieren)

Hoffen, das gibt Ihnen ein bisschen Vorsprung!

0

Wir können cron in Systemen nach unserer Bequemlichkeit Zeit hinzufügen. Verwenden Sie den folgenden Code, um Code hinzuzufügen, um eine Benachrichtigung an den zuständigen Benutzer zur genauen Zeit zu senden.

$loc_cron_min = 30; 
$loc_cron_hour = 12; 
$loc_cron_date = 20; 
$loc_cron_month = 01; 

exec('echo -e "`crontab -l`\n'.$loc_cron_min.' '.$loc_cron_hour.' '.$loc_cron_date.' '.$loc_cron_month.' * wget -qO /dev/null http://example.com/cron/sendsnotification.php?userid=1" | crontab -'); 

Wir können alle Zeitplan cron folgende Zeile in PHP Siehe

$output = shell_exec('crontab -l'); 
    echo $output; 

Gemäß obigen Code Benachrichtigung wird auf 20. Januar 2017 auf 12.30 Uhr gesendet. Sie müssen also nicht jede Minute Cron ausführen. Sie können Cron nach erfolgreicher Ausführung löschen.

Danke

+0

Danke für Ihre schnelle Antwort, ich mochte dieses Konzept, um geplante Benachrichtigung zu implementieren. Ich werde es versuchen und Sie wissen lassen, ob es funktioniert. – Amarja

+0

Ich habe einen Zweifel ... Um Datensätze aus der Datenbank zu holen, muss ich Cron für jede Minute ausführen, weil sie ein Fall sein könnten, in dem die Nachlaufzeit des Benutzers geändert würde. dann heißt es auf jeden Fall, ich habe es für jede Minute ausgeführt? – Amarja

+0

Ja. Es gibt eine Alternative, wenn die Nachlaufzeit geändert wird. Löschen Sie den vorherigen Cron für diesen Benutzer und fügen Sie einen neuen hinzu. Aber es hängt von Ihrer Anforderung ab. –

Verwandte Themen