通过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将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
PHP实现下载功能的代码
Sep 29 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
php简单复制文件的方法
May 09 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 PHP
PHP常量及变量区别原理详解
Aug 14 PHP
PHP copy函数使用案例代码解析
Sep 01 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字符串处理的10个简单方法
2010/06/30 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
python 获取et和excel的版本号
2009/04/09 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
介绍一下Linux中的链接
2016/06/05 面试题
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
查环查孕证明
2014/01/10 职场文书
大气污染防治方案
2014/05/19 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
关于做家务的心得体会
2016/01/23 职场文书
四则混合运算教学反思
2016/02/23 职场文书
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle
Docker下安装Oracle19c
2022/04/13 Servers
Java界面编程实现界面跳转
2022/06/16 Java/Android