Rumah  >  Artikel  >  php教程  >  通过PHP CLI实现简单的数据库实时监控调度

通过PHP CLI实现简单的数据库实时监控调度

黄舟
黄舟asal
2016-12-14 13:17:061333semak imbas

要实现的功能:监控user表,若有新纪录增加,将其向user2表中添加。(实际应用上可以引深一些,例如对数据进行相关处理等)

下面是PHP代码(dbtest.php)

代码如下:
!#/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";
$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 (查看所有作业号) 命令

更多相关文章请关注php中文网(www.php.cn)!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:cros跨域配置Artikel seterusnya:SQL中CONVERT转化函数的用法