通过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容易忘记的知识点分享
Apr 30 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
php截取中文字符串函数实例
Feb 23 PHP
Smarty最简单实现列表奇偶变色的方法
Jul 01 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
Jan 18 PHP
php的PDO事务处理机制实例分析
Feb 16 PHP
php封装json通信接口详解及实例
Mar 07 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
php往mysql中批量插入数据实例教程
Dec 12 PHP
PHP实现获取文件mime类型多种方法解析
May 28 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
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP中遍历stdclass object的实现代码
2011/06/09 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
zend framework重定向方法小结
2016/05/28 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
遗传算法之Python实现代码
2017/10/10 Python
python实现用户答题功能
2018/01/17 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
Python正则表达式和元字符详解
2018/11/29 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
培训主管的职业生涯规划
2014/03/06 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
服务承诺口号
2014/05/22 职场文书
献爱心标语
2014/06/21 职场文书
科技工作者先进事迹
2014/08/16 职场文书
先进事迹材料范文
2014/12/29 职场文书
高三毕业评语
2014/12/31 职场文书
英文慰问信范文
2015/03/24 职场文书
行政处罚事先告知书
2015/07/01 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android