通过PHP CLI实现简单的数据库实时监控调度
2015-01-24信息快讯网
下面是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提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
php 数组的指针操作实现代码
PHP游戏编程25个脚本代码
PHP通用检测函数集合
linux下删除7天前日志的代码(php+shell)
Notice: Undefined index: page in E:\PHP\test.php on line 14
小文件php+SQLite存储方案
PHP下操作Linux消息队列完成进程间通信的方法
PHP 数组遍历方法大全(foreach,list,each)
php mysql Errcode: 28 终极解决方法
php 将bmp图片转为jpg等其他任意格式的图片
PHP 彩色文字实现代码
php 过滤危险html代码
php 图片上添加透明度渐变的效果
需要发散思维学习PHP
php split汉字
PHP SQLite类
linux php mysql数据库备份实现代码
php array_flip() 删除数组重复元素
php zlib压缩和解压缩swf文件的代码