zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

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

监控数据库实时 实现 简单 通过 调度 phpcli
2023-06-13 09:14:10 时间
要实现的功能:监控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`ORDERBY`id`DESCLIMIT1";
$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}"LIMIT1";
$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="INSERTINTO`user2`(`name`,`age`)VALUES{$values_str}";
mysql_query($sql);
}
$old_id=max($old_id,$new_id);
sleep(3);//3秒后进入下次循环
}

业务流程应该没什么说的,就有几处需要注意的地方:
第一行是PHPCLI模式需要添加的命令路径,还有就是那个while(1)和sleep(3),其余都是普通的php代码写法。
通过shell命令phpdbtest.php运行即可,我在虚拟机上测试,正常情况下占用率CPU0%,内存1%。
实际应用中可以放到后台运行:
phpdbtest.php&
bg1
PS:&命令很多地方说的很不清楚,甚至错误。它只是将程序放入后台,而并没有实际运行!
顺带总结复习一下linux的前后台运行相关命令

命令   前后台  状态    使用方式

&     后台    暂停    加在命令后

bg    后台    运行    后跟作业号

fg     前台    运行    后跟作业号

Ctrl+Z 后台    暂停    (组合键)

jobs  (查看所有作业号)   命令