ホームページ  >  記事  >  バックエンド開発  >  PHP+LINUXでタイミングサービスを実装する方法

PHP+LINUXでタイミングサービスを実装する方法

WBOY
WBOYオリジナル
2016-06-13 13:34:04855ブラウズ

PHP+LINUX でタイミング サービスを実装する方法
LINUX ではど​​のようなツールが使用されますか?

-----解決策--------------------------------
Linux 自動実行スクリプトの php を使用するにはどうすればよいですか?

概要

Linux の Crontab は、定期的に特定の PHP ファイルを実行することで、PHP を利用した Linux スクリプトの自動実行を実現するコマンドです。
Linux で PHP を使用してスクリプトを自動的に実行するにはどうすればよいですか?

PHP をインストールすると、実行可能ファイルが生成されます。ファイル名は php で、通常は PHP インストール パスの下の /php/bin/php にあります。 。 /usr/local/bin にコピーします。ターミナル モードで php プログラムを実行します。

php -q onlinnum.php

PHP は元々 Web アプリケーションで使用されていたため、HTML の HEADER を送信します。 ╋ここでは PHP をシェルスクリプトとして使用します╋ 「-q」は HEADER を送信しないことを意味します。 -q を追加せずに表示結果を試すことができます。この時点で、ターミナル モードで PHP コードを実行できるようになります。 Linux コマンド: cron デーモン

これはシステムに常駐するサービスで、その機能は、1 日 1 回または月 1 回のディスクのチェックなどの日常的な作業を実行することです。 cron デーモンは、スケジュールされた作業リスト (crontab) を毎分チェックして、実行すべき命令があるかどうかを確認し、すべての出力がメールでユーザーに送信されます。

Set crontab
コマンド: crontab -e

このコマンドは、実行リストを編集するために vi エディターを呼び出します。例:

0 0 1,15 * * fsck /home
1 * * * * /home/myhome/printhello

各行は、コマンドの前にスケジュールされたジョブを表します。スケジュールされた時間には、左から右に次のようにスペースで区切られた合計 5 つのフィールドがあります:

------------------- --- ----
00 から 99 までの分
0 から 24 時
01 から 31 までの日
01 から 12 までの月
01 から 07 までの平日、月曜日から 07 までを表します日曜日
* は「毎日」を意味します。毎日実行する場合は、3 番目の列
に * を記入します。 ----
したがって、上記の例の 2 つのタスクは次のとおりです:
毎月 1 日と 15 日に /home ディスクをチェックします
ファイル /home/myhome/printhello を毎月の最初の 1 分に実行します1 時間ごと

crontab の表示: crontab -l crontab の削除: crontab -r

これで、PHP および crontab コマンドを使用して Linux でスクリプトを自動的に実行する方法がわかりました。

他に注意すべき点は何ですか?

phpでOracleなどのデータベースを使用している場合は、実行スクリプト内でOracleの環境設定をエクスポートする必要があります。 cron で実行されるスクリプトはログインしていないユーザーによって実行されるため、システムに設定されている環境変数の値の多くが欠落しており、データベースへの接続時に問題が発生する可能性があります。

コマンドラインでもこれを行うことができます

/usr/local/webserver/php/bin/php -q path/a.php 先頭はphpのインストールパスで、後ろは実行する phpのファイル名とパス





------解決策--------- 1 階

PHP が入っていますサーバーサイドスクリプト言語では、特定のプログラムを定期的に実行したい場合に便利な方法がありません。
Linux サーバー上の Crontab は、安定して PHP スクリプトを定期的に実行できます。

Crontab は、ユーザーが一定の時間または一定の間隔でプログラムを実行できるようにするために使用されます。
Linux プラットフォームでタスク スケジュール機能を実装する必要がある場合、それを実現するための cron スクリプトを作成できます。
特定の頻度でタスクを実行します
Linux はデフォルトで crond プロセスを開始します。ユーザーが crond プロセスを開始または終了する必要はありません。
crond プロセスは、スケジュール タスクの読み取りと実行を担当します。ユーザーは、対応するスケジュール スクリプトを cron スケジュール設定ファイルに書き込むだけで済みます。
cron のスケジュールファイルは次のとおりです。

1. crontab
2. cron.d
3. cron.daily
4. cron.hourly
5. cron.monthly
6. cron.weekly

タスクが毎時毎月モードで実行されない場合は、対応する crontab を crontab または cron.d ディレクトリに書き込むことができます。
例:
スクリプト /opt/bin/test-cron.sh を 1 分ごとに実行します
cron.d 内に を作成できます> */ 1 * * * * root /opt/bin/test-cron.sh

PHP スクリプトを実行する

方法 1
PHP スクリプトを定期的に実行したい場合は、次のように直接書くことができます:
*/1 * * * * root -q /bin/local/php /path/to/your/php/我爱豆丁.php (毎回我爱豆丁.phpを実行してください)分)
この方法を記述するには、PHP を実行可能なスクリプト ファイルに変換する必要があることに注意してください。コマンドラインで、スクリプトが存在するディレクトリに移動します。
chmod +x iloveducin.php

方法 2
上記の方法には問題があります。インクルード ファイルがある場合です。 iidodin スクリプトでは、スクリプトは PHP へのパスをまったく見つけることができません。PHP は /bin/local/php ディレクトリ内のファイルを探しますが、もちろん見つかりません。
したがって、この状況が発生した場合は、次の手順を実行します。
ターミナルで次のコマンドを入力して、sh プログラムと lynx プログラムのパスを取得します。
whereis sh
whereis lynx
または
どの sh
どの lynx
どれかを入力すると、必要なパスが返されます。 lynx がシステムで利用できない場合は、他のテキスト モデル ブラウザである links、w3m、または links2 を試してください。これらのブラウザはスクリプトを実行します。
次に、sh ファイルを作成し、それを使用して lynx 経由で php ファイルを呼び出す必要があります。サーバーに lynx がインストールされており、sh パスが /bin/sh で、lynx パスが /usr/local/bin/lynx
#!/bin/sh
/usr/local/bin/lynx であると仮定します。 -source http://www.yoursite.com/folder/我爱豆丁.php
感嘆符に注意してください
このスクリプトを cron-lynx.sh という名前で保存します


のように見つけることができます。Web サイトのルート ディレクトリに置くことができます。
次に、myidudin.php のファイルを作成します。 cron が実行されると、lynx を通じて呼び出されます。このファイルにはブラウザ経由でアクセスできます。

次に、ホストの crontab を以下のように編集します。
*/1 * * * * root /bin/sh /usr/www/yourdirectory/sh_我愛豆丁s/cron-lynx.sh
/bin/sh と /usr の間にはスペースがあります。もう 1 つ注意すべき点は、sh ファイルと php ファイルが正しいことです。

例 1

Linux で PHP スクリプトを定期的に実行します
通常の方法で PHP を作成します
$file = '/htdocs/www/b100/ egspace /Bin/test/'.date('H').'-'.date('i').'-'.date('s').'.txt';
file_put_contents($file, date ('Y-m-d'));
?>
PHP ファイルの属性をシェル ファイルに変更します:
chmod +x test.php
次に、crontab を編集します:
crontab -e
行を追加します:
*/1 * * * * /usr/local/bin/php -q /htdocs/www/b100/egspace/Bin/test.php

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。