ホームページ >バックエンド開発 >PHPチュートリアル >Webhook を使用して PHP プロジェクトを自動的にデプロイする

Webhook を使用して PHP プロジェクトを自動的にデプロイする

藏色散人
藏色散人転載
2020-01-03 17:54:223369ブラウズ

1. まず自動デプロイの原理について話しましょう. 通常、コードをプッシュすると、Webhook に設定された URL を自動的にリクエストして、リクエストとレスポンスを完了することができます。したがって、設定した URL アドレスによって要求された PHP ファイルの内容がコマンド ラインの git Push コマンドを実行するものである限り、毎回ローカルでコードをリモート エンドにプッシュでき、サーバーは自動的に git pull と pull を実行します。最新のブランチ。

2. 次に、設定する必要があるのは 2 か所です:

①git プロジェクトの Webhook 設定:

通常、コードをホストするプラットフォームでは、これはプロジェクト設定に 1 つあります。通常、Webhook 設定には URL 設定というコンテンツが 1 つだけあります。ここでは http://www.xxxxx.com/webhook.php

(明らかに、私は Web サイトのルート ディレクトリにいます。webhook.php ファイルをスローすると、コードをリモート エンドにプッシュするたびに、Web サイトの webhook.php ファイルがアクセスされます)

②フック ファイルサーバー側 (コードが実行される場所) ( webhook.php) の設定:

$command = 'cd 代码位置';
$output = shell_exec($command);
 
$command = 'git pull';
$output = shell_exec($command);
print $output;

ここに 2 つの簡単な文があります。最初に cd コマンドで対応するディレクトリに入り、次に git pull コマンドを実行します

主にshell_exec()関数で使用します。PHPがコマンドラインを実行するための関数です。Baiduで学生向けに詳しく紹介しています。

ここで注意したいのは、以前にshell_exec()コマンドを実行したところ、サーバーが応答しなくなって固まってしまったので、

$output = shell_exec('ls');
print_r($output);

コマンドを使ってテストしたところ、タイムアウトになったこともわかりました。これは非常に奇妙だったので、そのままにしておきました。結局のところ、それはわずか 3 ~ 5 行のコードであり、なぜタイムアウトを要求し続けるのかわかりませんでした。 2 か月後、元の印刷物の文字列エンコーディングに問題があるのではないかと考えました。したがって、次のコード行があります。

$encode = mb_detect_encoding($output, array('ASCII','GB2312','GBK','UTF-8'));
$trans = iconv( $encode, "UTF-8",$output);
print $trans;

これで実行できます。 。 。以前、shell_exec() がなぜタイムアウトを繰り返していたのか思い出せませんが、再びこのエラーに遭遇した友人は、返された内容を印刷しないようにするか、印刷された内容をエンコードしないようにしてください。しかし、この忌まわしい問題に遭遇する友人もまだ少数いると思います。

PHP 関連の知識について詳しくは、PHP チュートリアル をご覧ください。

以上がWebhook を使用して PHP プロジェクトを自動的にデプロイするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。