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


Posted in PHP onJuly 01, 2009

要实现的功能:监控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     (查看所有作业号)    命令

PHP 相关文章推荐
汉字转化为拼音(php版)
Oct 09 PHP
发一个php简单的伪原创程序,配合商城采集用的
Oct 12 PHP
PHP二维数组的去重问题解析
Jul 17 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 PHP
$_GET['goods_id']+0 的使用详解
Jun 06 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
Symfony控制层深入详解
Mar 17 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
PHP 实现浏览记录并按日期分组
May 11 PHP
laravel框架上传图片实现实时预览功能
Oct 14 PHP
PHP时间相关常用函数用法示例
Jun 03 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 29 #PHP
PHP 彩色文字实现代码
Jun 29 #PHP
php 过滤危险html代码
Jun 29 #PHP
php 图片上添加透明度渐变的效果
Jun 29 #PHP
需要发散思维学习PHP
Jun 29 #PHP
PHP HTML代码串 截取实现代码
Jun 29 #PHP
PHP 网页过期时间的控制代码
Jun 29 #PHP
You might like
如何过滤高亮显示非法字符
2006/10/09 PHP
教你如何使用php session
2013/10/28 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
JQUERY操作JSON实例代码
2010/02/09 Javascript
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
详解webpack分离css单独打包
2017/06/21 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
Python+django实现简单的文件上传
2016/08/17 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
python如何写个俄罗斯方块
2020/11/06 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
毕业生自荐信的主要内容
2013/10/29 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
公务员政审个人总结
2015/02/12 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang