Ich habe einen Cronjob 'cron_parent.php' in meinem Wurzelverzeichnis eingerichtet. Es funktioniert wie folgt:Ein Cronjob für mehrere Subdomains
- prüfen, welche Kundenordner vorhanden sind (dh Sub-Domains.)
- Mit
foreach()
, umfassen die cron_child.php für jeden relevanten Sub-Domain - Die eigentliche Arbeit in jeder Subdomain zu cron_child.php erfolgt .
Alle Subdomains enthalten identische PHP-Dateien und Funktionen. So natürlich, lief ich in Schwierigkeiten, wenn diese unter Verwendung von auf mehr als eine Sub-Domain, weil
<b>Fatal error</b>: Cannot redeclare fserror() (previously declared in
/home/***hidden***/public_html/demo/dbconfig.php:28)
in <b>/home/***hidden***/public_html/dev/dbconfig.php</b> on line <b>44</b><br />
Ich weiß, dass include()
ist wahrscheinlich nicht die richtige Option hier. Gibt es eine Möglichkeit, die cron_child.php von cron_parent.php getrennt zu starten?
Edit: Hinzugefügt Code aus cron_parent.php:
<?php
date_default_timezone_set("Europe/Oslo");
header('Content-Type: text/html; charset=utf-8');
$root = dirname(dirname(__FILE__));
$directories = glob($root . '/*' , GLOB_ONLYDIR);
foreach($directories as $path)
{
if(is_file("$path/cron_child.php"))
{
include("$path/cron_child.php");
}
}
Zu Testzwecken enthält cron_child.php nur dieses Recht jetzt:
<?php
include "functions.php";
return false;
Zeigen Sie Ihren Code! Es gibt auch 'require_once' und' include_once'. Aber ich schätze, Sie müssen sich Muster anschauen;). –
Ja können Sie! Sie können einen neuen PHP-Prozess mit 'exec ('php /path/to/script.php')' starten, der dann als untergeordneter Prozess ausgeführt wird. – JensV
@E_p Sie haben wahrscheinlich recht, wenn Sie sich Designmuster ansehen. Ich könnte natürlich einen Cronjob für jede meiner Subdomains einrichten, aber ich dachte, es wäre einfacher, einfach eine Parent-PHP-Datei zu haben, die das cron_child in jeder Subdomain ausführt. Gibt es einen anderen Weg, dies zu tun? – aanders77