Hi zusammen,
ich hänge mich hier jetzt mal mit rein, weil wir genau die gleiche Situation haben. All-inkl als Hosting und quasi immer die Meldung in den Frosh Tools „PHP FPM max children reached“ und der Shop hat halt eine Warnung.
Auch bei uns wurde von all inkl. eine Logdatei angelegt, php-fpm_slow.log und in dieser stehen alle php Jobs, die länger als 10 Sekunden laufen. Und wenn ich die Datei prüfe, stehen dort ausschließlich die beiden Cronjobs run-scheduledtasks.php und messenger-consume.php.
Diese sehen so aus:
<?php
exec("/usr/bin/php83 ../bin/console messenger:consume failed async low_priority --time-limit=55 --memory-limit=512M 2>&1", $out, $result);
echo "Returncode: " .$result ."<br>";
echo "Ausgabe des Scripts: " ."<br>";
echo "<pre>"; print_r($out);
?>
<?php
exec("/usr/bin/php83 ../bin/console scheduled-task:run --time-limit=55 --memory-limit=512M 2>&1", $out, $result);
echo "Returncode: " .$result ."<br>";
echo "Ausgabe des Scripts: " ."<br>";
echo "<pre>"; print_r($out);
?>
Und bisher liegen die 2 Skripte direkt im public Ordner.
Die Cronjobs sind eingerichtet und laufen alle 2 Minuten. Als Ergebnis bekomme ich dann:
Returncode: 0
Ausgabe des Scripts:
Array ( [0] => Scheduled task runner stopped due to time limit of 300s reached )
Returncode: 0
Ausgabe des Scripts:
Array ( [0] =>
[1] => [OK] Consuming messages from transports „failed, async, low_priority“.
[2] =>
[3] => // The worker will automatically exit once it has exceeded 512M of memory, been [4] => // running for 300s or received a stop signal via the messenger:stop-workers [5] => // command.
[6] =>
[7] => // Quit the worker with CONTROL-C.
[8] =>
[9] => // Re-run the command with a -vv option to see logs about consumed messages. [10] => )
Ich hatte vorher in meinen Skripten ein Limit von 300s drin, das alle 10 Minuten lief, jetzt nur noch 55s, das alle 2 Minuten läuft. Trotzdem werden hier weiterhin die 300s angezeigt. Muss ich bei einer Änderung der Skripte etwas neu starten, damit das greift?
Um das Ganze sicherer zu machen, habe ich jetzt unterhalb von public einen neuen Ordner angelegt, in den ich die 2 php Skripte verschoben habe. Zusätzlich dort noch ne .htaccess und .htpasswd erstellt und im all inkl Backend dann die Userdaten bei den Cronjobs hinterlegt. Leider laufen jetzt die Skripte nicht mehr, ich bekomme eine Fehlermeldung wie folgt:
Returncode: 1
Ausgabe des Scripts:
Array
(
[0] =>
Could not open input file: ../bin/console
)
Was mache ich hier falsch? Wie muss ich das Ganze einrichten, damit es sicher ist und die 2 Dateien hinter einem htaccess liegen?