Mich würden Meinungen zur besten Konfiguration für einen Apache-Webserver in diesem Szenario interessieren.
Ich habe eine Reihe von Skripten (PHP), die in regelmäßigen Abständen ausgeführt werden, die meisten alle gleichzeitig oder in gleichen Zeitabständen über einen Cron-Job.
Da ich immer mehr dieser Skripte einfüge, die als Webseiten bezeichnet und in PHP geschrieben sind, mache ich mir leichte Sorgen, dass ich einige davon unterwegs „verlieren“ könnte, da sie alle gleichzeitig ausgelöst werden.
Da „niemand“ sie tatsächlich sieht und auch nicht darauf wartet, dass diese Seiten geladen werden (eine Verzögerung von Sekunden stellt kein Problem dar), habe ich mich gefragt, welche Einstellungen in apache2.conf ich prüfen muss, um sicherzustellen, dass alle Aufrufe dieser Seiten tatsächlich verarbeitet werden (auch mit einer Verzögerung von einigen Sekunden), anstatt dass Apache sie verwirft, wenn sie nicht innerhalb einer bestimmten Zeitspanne verarbeitet werden können (im Gegensatz zu Standard-HTML-/PHP-Seiten, die von einer Person angezeigt werden, die den Webserver durchsucht. Dies sind lediglich Seiten, die Skripte ausführen, auf die niemand wirklich wartet).
Meine ideale Lösung besteht darin, dass sie (die über Cron aufgerufenen Seiten) einfach gestapelt und nacheinander verarbeitet werden, bis der nächste Stapel aufgerufen wird oder in einer ruhigeren Phase, anstatt dass Apache sie beendet, weil sie in einem bestimmten Zeitraum nicht ausgeführt wurden.
Natürlich verstehe ich, dass ich ein Problem habe, wenn sie länger in der Warteschlange stehen, als die nächste Charge ausgeführt werden soll.
In diesem Zusammenhang: Wie kann ich anzeigen, was Apache in die Warteschlange gestellt hat oder welche Seiten er verarbeitet?
Vielen Dank im Voraus.
Antwort1
Ich sehe in diesem Zusammenhang nicht wirklich die Notwendigkeit, Apache zu verwenden, wenn Sie Zugriff auf Cron haben. Sie müssen keine Seiten bereitstellen, sondern anscheinend nur Code ausführen.
Warum nicht einfach mal so etwas ausprobieren?
#!/usr/bin/env php
<?php
[Your code here.
Perhaps even send e-mail updates
including with the status of your script,
or update a lightweight database each time
the script has run.]
Speichern Sie dieses Skript einfach als /Pfad/zu/Skript.php und rufen Sie es in Ihrer Crontab auf php /path/to/script.php
(oder ./path/to/script.php
verwenden Sie einfach, wenn Sie der Datei Ausführungsrechte hinzufügen chmod +x
). Damit sollten Sie die Aufgabe erledigen und eine Menge Apache-Overhead sparen.