通过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 简单数组排序实现代码
Aug 05 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
Jun 09 PHP
thinkphp实现多语言功能(语言包)
Mar 04 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
ucenter通信原理分析
Jan 09 PHP
php.ini中的request_order推荐设置
May 10 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
Feb 16 PHP
thinkphp jquery实现图片上传和预览效果
Jul 22 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
Dec 21 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提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
jQuery实现商品活动倒计时
2015/10/16 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
python字符串反转的四种方法详解
2019/12/02 Python
Django REST framwork的权限验证实例
2020/04/02 Python
浅谈Python中的模块
2020/06/10 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
.NET概念性的面试题
2012/02/29 面试题
《爱如茉莉》教后反思
2014/04/12 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
房屋出售授权委托书
2014/10/12 职场文书
看上去很美观后感
2015/06/10 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
详解Vue3使用axios的配置教程
2022/04/29 Vue.js