通过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 相关文章推荐
PHP3 safe_mode 失效漏洞
Oct 09 PHP
默默小谈PHP&amp;MYSQL分页原理及实现
Jan 02 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
Aug 01 PHP
解析php中如何直接执行SHELL
Jun 28 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
php中stream(流)的用法
Mar 25 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
ajax+php控制所有后台函数调用
Jul 15 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
PHP实现生成数据字典功能示例
May 24 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
php数组应用之比较两个时间的相减排序
2008/08/18 PHP
php 8小时时间差的解决方法小结
2009/12/22 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
JavaScript事件列表解说
2006/12/22 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
js实现图片粘贴上传到服务器并展示的实例
2017/11/08 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
基于Python实现用户管理系统
2019/02/26 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Django实现内容缓存实例方法
2020/06/30 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
应届生法律求职信
2013/10/22 职场文书
员工评语大全
2014/01/19 职场文书
市场开发计划书
2014/05/07 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
2014年仓库工作总结
2014/11/20 职场文书