PHP CLI を介したシンプルなリアルタイムデータベースの監視とスケジューリング

WBOY
リリース: 2016-06-13 12:22:44
オリジナル
847 人が閲覧しました

実装する機能: userテーブルを監視し、新規レコードが追加された場合はuser2テーブルに追加します。 (実際のアプリケーションでは、データの関連処理など、より詳細な処理が可能です)

以下は PHP コード (dbtest.php) です。

コピーcode コードは次のとおりです:


!#/usr/local/php/bin/php
mysql_connect('localhost', 'username', 'password') ;
mysql_select_db("test");
echo 'PID: '.posix_getpid().' //現在のプロセス PID (Linux の場合)
$old_id = 0;
while (1 )
{
$sql = "SELECT `id` FROM `user` ORDER BY `id` DESC LIMIT 1";
$item = mysql_fetch_assoc( $result);
$new_id = $item['id'];
$values_arr = array();
for ($i=$new_id; $i> $old_id && $old_id!=0 ; $i--)
{
$sql = "SELECT `name`,`age` FROM `user` WHERE `id`='{$i}' LIMIT 1 ";
$result = mysql_query($sql);
$item = mysql_fetch_assoc($result);
$name = $item['name'];
$age = $item['年齢'];
$ value_arr[] = "('{$name}', '{$age}')"
}
if (!emptyempty($values_arr))
{
$values_str = implode( ',', $values_arr);
$sql = "`user2`(`name`, `age`) VALUES {$values_str}";
}
$old_id = max($old_id, $new_id);
sleep(3); // 3 秒後に次のサイクルに入る
}


ビジネス プロセスについては何も言う必要はありませんが、注意すべき点がいくつかあります:

最初の行は PHP CLI モードで追加する必要があるコマンド パスであり、while(1) があります。とsleep(3)、その他は通常のPHPコードの記述方法です。
シェル コマンド php dbtest.php を通じて実行できます。通常の状況では、CPU 使用率は 0%、メモリは 1% でした。
実際のアプリケーションでは、バックグラウンドで実行できます:
php dbtest.php &
bg 1
追記: & コマンドは多くの場所で不明瞭であったり、間違っていたりします。実際にプログラムを実行せずに、プログラムをバックグラウンドに置くだけです。
ところで、Linux のフロントエンドとバックエンドの実行に関連するコマンドをまとめて確認してみましょう


コマンド フロントエンドおよびバックエンド ステータスの使用法

&

コマンド

の後にバックグラウンド一時停止が追加されます バックグラウンド実行の後にジョブ番号が続く

fg フロントデスクの実行に続いてジョブ番号が続きます

Ctrl Z バックステージ一時停止 (キーの組み合わせ)

jobs (すべてのジョブ番号を表示) コマンド

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート