通过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 采集获取指定网址的内容
Jan 05 PHP
PHP 文件编程综合案例-文件上传的实现
Jul 03 PHP
PHP连接局域网MYSQL数据库的简单实例
Aug 26 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
Jun 06 PHP
nginx+thinkphp下解决不支持pathinfo模式
Jul 01 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
php cli模式下获取参数的方法
May 05 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
laravel使用Faker数据填充的实现方法
Apr 12 PHP
laravel 多图上传及图片的存储例子
Oct 14 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
php 删除记录实现代码
2009/03/12 PHP
php网页病毒清除类
2014/12/08 PHP
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
python 算法 排序实现快速排序
2012/06/05 Python
用C++封装MySQL的API的教程
2015/05/06 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
树莓派升级python的具体步骤
2020/07/05 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
自学考试自我鉴定范文
2013/09/26 职场文书
中专生的个人自我评价
2013/12/11 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
21岁生日感言
2014/02/27 职场文书
法制宣传实施方案
2014/03/13 职场文书
单位单身证明样本
2014/10/11 职场文书
2014年民警工作总结
2014/11/25 职场文书
转让协议书
2015/01/27 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
使用numpy nonzero 找出非0元素
2021/05/14 Python
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python