通過PHP CLI實現簡單的資料庫即時監控調度

來源:互聯網
上載者:User

要實現的功能:監控user表,若有新紀錄增加,將其向user2表中添加。(實際應用上可以引深一些,例如對資料進行相關處理等)

下面是PHP代碼(dbtest.php) 複製代碼 代碼如下:!#/usr/local/php/bin/php
<?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";
$result = mysql_query($sql);
$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['age'];
$values_arr[] = "('{$name}', '{$age}')";
}
if (!emptyempty($values_arr))
{
$values_str = implode(',', $values_arr);
$sql = "INSERT INTO `user2`(`name`, `age`) VALUES {$values_str}";
mysql_query($sql);
}
$old_id = max($old_id, $new_id);
sleep(3); //3秒後進入下次迴圈
}

商務程序應該沒什麼說的,就有幾處需要注意的地方:
第一行是PHP CLI模式需要添加的命令路徑,還有就是那個while(1)和sleep(3),其餘都是普通的php代碼寫法。
通過shell命令php dbtest.php運行即可,我在虛擬機器上測試,正常情況下佔用率CPU 0%,記憶體1%。
實際應用中可以放到後台運行:
php dbtest.php &
bg 1
PS:&命令很多地方說的很不清楚,甚至錯誤。它只是將程式放入後台,而並沒有實際運行!
順帶總結複習一下linux的前後台運行相關命令

命令 前後台 狀態 使用方式

& 後台 暫停 加在命令後

bg 後台 運行 後跟作業號

fg 前台 運行 後跟作業號

Ctrl+Z 後台 暫停 (按鍵組合)

jobs (查看所有作業號) 命令

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.