Linux_PHP チュートリアルで crontab を使用して PHP スクリプトを定期的に実行する

WBOY
リリース: 2016-07-13 17:41:45
オリジナル
702 人が閲覧しました

最近この方法が緊急に必要なので、記録して時間があるときに試してください^^

Linux では、crontab + php メソッドを使用できます:

1. crontab –eを使用してスケジュールされたタスクを編集します

内容は次のとおりです:

xx:xx:xx test.phpファイルを実行します

2. php ファイルはファイルの最初の行にインタプリタのパスを加えたものでなければなりません(perl と同じように)

#!/usr/local/bin/php

PHPの実行にはApacheのサポートが必要で、シェルスクリプトの実行にはLinuxのサポートが必要で、Linuxは特定のプログラムを定期的に実行する機能をサポートしています

------------------------------------------------- - --------------

シェルスクリプト言語としてPHPを使う(再録)

--英語原文:Darrell Brogdon、http://www.phpbuilder.com/columns/darrell20000319.php3で公開

おそらく多くの人が PHP を使用して手紙のスケジュール送信などのプログラムを作成することを考えたことがあると思いますが、PHP を定期的に実行する方法はありません。PHPBuilder にアクセスしたときにこの記事を見つけたので、皆さんのために翻訳したいと思います。編集も行いました)、皆さんのお役に立てれば幸いです。

------------------------------------------------- - ---------------------------------

PHP が非常に優れた動的 Web 開発言語 (高速、短い開発サイクルなど) であることは誰もが知っています。しかし、PHP がシェル スクリプトを作成するための言語としても使用できることを認識している人はほとんどいません。PHP は、Perl や Bash ほど強力ではありませんが、特に、次のような場合に優れた利点があります。私のような人は、PHP には詳しいが、Perl にはあまり詳しくありません。

PHP をシェル スクリプト言語として使用するには、PHP を Apache モードではなくバイナリ CGI としてコンパイルする必要があります。バイナリ CGI モードで実行するように PHP をコンパイルする際には、セキュリティ上の問題がいくつかあります。解決策については、PHP マニュアル (http://. /www.php.net)。

最初はシェル スクリプトを書くのに不快に感じるかもしれませんが、徐々に上達します: PHP を一般的な動的 Web ページ作成言語として使用することと、シェル スクリプト言語として使用することの唯一の違いは、シェル スクリプトを最初の行で開始する必要があることです。このスクリプトのプログラム パスを説明します:

#!/usr/local/bin/php -q

PHPがHTTPHeaderを出力しないように、PHP実行ファイルの後にパラメータ「-1」を追加しました(それでもWeb上の動的なWebページとして使用する必要がある場合は、header関数を使用してHTTPHeaderを出力する必要があります)自分自身)。もちろん、シェル スクリプトで PHP の開始タグと終了タグを使用する必要があります:

ここで、シェル スクリプト言語としての PHP の使用をよりよく理解するために例を見てみましょう:

#!/usr/local/bin/php -q

print(「こんにちは、世界! ");

?>

上記のプログラムは単に「Hello, world!」をモニターに出力するだけです。

1. シェルスクリプトの実行パラメータをPHPに渡します:

シェルスクリプトとしてプログラムを実行する際、パラメータを追加することがよくありますが、PHPには埋め込み配列「$argv」があり、シェル実行時にパラメータを簡単に読み込むことができます。スクリプトが実行中です (「$argv[1]」は最初のパラメータに対応し、「$argv[2]」は 2 番目のパラメータに対応します。以下同様)。たとえば、次のプログラム:

#!/usr/local/bin/php -q

$first_name = $argv[1];

$last_name = $argv[2];

printf("こんにちは、%s %s! 今日はどうですか? "、$first_name、$last_name);

?>

上記のコードは、実行時に 2 つのパラメーター、つまり姓と名を必要とします。たとえば、次のように実行します。

[dbrogdon@artemis dbrogdon]$ scriptname.ph ダレル・ブログドン

シェル スクリプトはモニターに出力されます:

こんにちは、ダレル・ブログドン、今日はどうですか?

[dbrogdon@artemis dbrogdon]$

PHP が動的 Web ページ作成言語として使用される場合、「$argv」配列も含まれますが、いくつかの違いがあります。PHP がシェル スクリプト言語として使用される場合、「$argv[0]」はファイルに対応します。スクリプトの名前。動的 Web ページの書き込みに使用される場合、「$argv[1]」は QueryString の最初のパラメータに対応します。

2. インタラクティブなシェルスクリプトを作成します:

シェルスクリプトが勝手に動くだけで対話性がなくなってしまっては意味がありません。 PHP を使用してシェル スクリプトを作成する場合、ユーザー入力情報を読み取るにはどうすればよいでしょうか? 残念ながら、PHP 自体にはユーザー入力情報を読み取る関数やメソッドがありませんが、他の言語に従ってユーザー入力を読み取る関数を記述することができます。情報「読み取り」:

関数 read() {

$fp = fopen(/dev/stdin, r);

$input = fgets($fp, 255);

fclose($fp);

$input を返す;

}

?>

上記の関数はUnixシステムでのみ使用できることに注意してください(他のシステムは対応する変更を加える必要があります)。上記の関数は、ファイル ポインターを開き、次に 255 バイト以下の行を読み取り (これが fgets の動作です)、その後ファイル ポインターを閉じて、読み取った情報を返します。

これで、関数「read」を使用して、以前に作成したプログラム 1 を変更して、より「インタラクティブ」にすることができます。

#!/usr/local/bin/php -q

関数 read() {

$fp = fopen(/dev/stdin, r);

$input = fgets($fp, 255);

fclose($fp);

$input を返す;

}

print("あなたの名前は何ですか? ");

$first_name = read();

print("あなたの姓は何ですか? ");

$last_name = read();

print(" こんにちは、$first_name $last_name さん、初めまして! ");

?>

上記のプログラムを保存して実行すると、予期しないものが表示されるかもしれません。入力の最後の行が 3 行になります。これは、「read」関数によって返される情報に、末尾の改行文字も含まれているためです。 " は姓名に保持されます。末尾の改行文字を削除するには、「read」関数を変更する必要があります:

関数 read() {

$fp = fopen(/dev/stdin, r);

$input = fgets($fp, 255);

fclose($fp);

$input = Chop($input); // 末尾の空白を削除します

$input を返す;

}

?>

3. PHPで書かれたシェルスクリプトを他の言語で書かれたシェルスクリプトに含める:

場合によっては、PHP で書かれたシェル スクリプトを他の言語で書かれたシェル スクリプトに含める必要がある場合があります。実際には非常に簡単です。簡単な例を次に示します:

#!/bin/bash

echo これはコードの Bash セクションです。

/usr/local/bin/php -q <

print("これはコードの PHP セクションです ");

?>

EOF

実際には、PHP を呼び出して次のコードを解析し、出力してから、次のコードをもう一度試します。

#!/bin/bash

echo これはコードの Bash セクションです。

/usr/local/bin/php -q <

$myVar = PHP;

print("これはコードの $myVar セクションです ");

?>

EOF

2 つのコードの唯一の違いは、2 回目に変数 "$myVar" が使用されていることです。実際に PHP がエラー メッセージを表示します。「解析エラー: 2 行目で解析エラーが発生しました。」 "! これは、Bash の変数も "$myVar" であり、Bash パーサーが最初に変数を置き換えるためです。この問題を解決するには、各 PHP 変数の前にエスケープ文字 "" を追加する必要があるため、コードはは次のように変更されます:

#!/bin/bash

echo これはコードの Bash セクションです。

/usr/local/bin/php -q <

$myVar = PHP;

print("これはコードの $myVar セクションです ");

?>

http://www.bkjia.com/PHPjc/486117.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486117.html技術記事この方法は最近急遽必要になったので、記録して、時間があるときに試してみてください^^ Linux では、crontab + php メソッドを使用できます: 1. crontab e を使用して、スケジュールされたタスクの内容を次のように編集します: xx:xx:xx 実行...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート