1. Lassen Sie uns zunächst über das Prinzip der automatischen Bereitstellung sprechen. Wenn wir den Code übertragen, können wir automatisch die im Webhook festgelegte URL anfordern, um eine Anfrage und Antwort abzuschließen. Solange der Inhalt der PHP-Datei, die über die von uns festgelegte URL-Adresse angefordert wird, darin besteht, den Befehlszeilenbefehl git push auszuführen, können wir den Code jedes Mal, wenn wir ihn lokal übertragen, an das Remote-Ende übertragen, und der Server führt automatisch git pull aus um den neuesten Zweig zu ziehen.
2. Dann müssen wir zwei Orte festlegen:
①Die Webhook-Einstellungen des Git-Projekts:
Im Allgemeinen auf der Plattform, auf der wir den Code hosten In den Projekteinstellungen gibt es normalerweise nur einen Inhalt, nämlich die URL-Einstellung. Hier habe ich http://www.xxxxx.com/webhook.php festgelegt. Offensichtlich befinde ich mich im Stammverzeichnis der Website und werfe eine webhook.php-Datei. Jedes Mal, wenn ich Code an das entfernte Ende schiebe, wird auf die webhook.php-Datei meiner Website zugegriffen)
②Die Hook-Datei auf der Serverseite (wo der Code ausgeführt wird) ( webhook.php) Einstellungen:
$command = 'cd 代码位置'; $output = shell_exec($command); $command = 'git pull'; $output = shell_exec($command); print $output;
Hier sind zwei einfache Sätze, um das entsprechende Verzeichnis einzugeben und dann den Git-Pull-Befehl auszuführen
Hauptsächlich für die Funktion „shell_exec()“ verwendet. Dies ist eine Funktion für PHP zum Ausführen der Befehlszeile.
Was hier zu beachten ist, ist, dass ich Wenn ich zuvor den Befehl „shell_exec()“ ausgeführt habe, reagierte der Server nicht mehr und blieb hängen. Deshalb habe ich zum Testen den Befehl
$output = shell_exec('ls'); print_r($output);
verwendet und festgestellt, dass auch eine Zeitüberschreitung aufgetreten ist, was sehr seltsam war, also habe ich ihn immer wieder beiseite gelegt und Ich konnte nicht herausfinden, was los war. Schließlich waren es nur drei oder fünf Zeilen Code, und ich wusste nicht, warum es ständig eine Zeitüberschreitung anforderte. Zwei Monate später fragte ich mich, ob es ein Problem mit der String-Kodierung des Originaldrucks war? Wir haben also folgende Codezeilen:
$encode = mb_detect_encoding($output, array('ASCII','GB2312','GBK','UTF-8')); $trans = iconv( $encode, "UTF-8",$output); print $trans;
Dann kann es ausgeführt werden. . . Ich kann mich nicht erinnern, warum es bei Shell_exec() immer wieder zu Zeitüberschreitungen kam. Freunde, denen es erneut aufgefallen ist, können versuchen, den zurückgegebenen Inhalt nicht zu drucken oder den gedruckten Inhalt zu kodieren. Ich glaube jedoch, dass es immer noch eine kleine Anzahl von Freunden gibt, die auf dieses widerliche Problem stoßen.
Weitere PHP-Kenntnisse finden Sie im
PHP-TutorialDas obige ist der detaillierte Inhalt vonVerwenden Sie Webhook, um PHP-Projekte automatisch bereitzustellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!