php实时监控数据,php 监控

PHP程序,如何监控内存情况

看到有人写透视宝做php监控的原理图,跟你分享下。我估计大家做的方式都是差不多。

成都创新互联从2013年成立,先为西平等服务建站,西平等地企业,进行企业商务咨询服务。为西平企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

PHP运行支撑的ZendEngine早在设计过程中已经预留了丰富的Hook,可以有效干涉处理过程中的几个关键步骤。利用了以下几个Hook,就能方便的获取数据:

1.           zend_compile_file zend_compile_string

加载分析文件或字符串,本身就会造成非常大的IO,如果过多地执行加载,无疑会造成内存和CPU的消耗.通过这两个hook,可以取得文件名、执行行数、使用内存和CPU占用时间。

2.           zend_execute zend_execute_internal

通过这两个hook的使用,我们可以准确地分析得出一个PHP应用中的类调用、方法调用、方法参数、内存占用和CPU占用,加以分析,便可以准确得出应用系统运行过程中的方法运行栈,API调用地址,SQL语句,CacheKey以及Cache命中等关键信息。

3.           zend_throw_exception_hook

利用异常钩子,可以准确地得到应用系统运行过程中出现的异常信息,当然包括异常发生的类\方法位置,参数,异常code和异常message。

4.           zend_error_cb

错误钩子则更加直接,可以准确得到系统运行过程中出现的任何一个warning,代码错误或语法错误。

请问php如何实现实时监控文件.

在服务端建立一个根据需要进行循环的PHP脚本就可以。

猜测一下,您的第二个问题,是不是想进行相关检测以避免重复触发这个脚本。

实际上,不建议由用户行为触发这个脚本,无论是服务端代码,还是客户端的异步Ajax。

如果要用PHP脚本进行不停的循环监控,请联系运维人员,服务器启动,即在服务端开始运行这个脚本,他们会向您提供解决方案的。

真正的建议是,如果有任何可能,都不要使用PHP脚本利用循环代码进行服务端的监控。

不得不承认,这个方面PHP的稳定性还差一些,Java或许可以这么做,PHP就比较痛苦了。

比较可能的办法是请运维人员帮忙,通报监控逻辑,然后请他安装各种触发条件调用相应的PHP代码。

如果坚持使用PHP脚本进行相关工作,有两个建议给您:

尽快释放资源,无论脚本使用了什么资源,包括文件、内存、数据库等等,都尽快释放,这种地方可万万不能偷懒,否则就是自虐了。

在这个脚本中进行独立的手工日志输出,任何一层循环的入口都要进行记录,这样在监控失败的时候才有办法查找问题。

PHP如何实施监控数据库的更新,一旦有更新,就把更新的数据推送给Android?

那你可以在插入数据库那里设置监听呀,一有插入就往Android推送消息。

不然你只能通过每隔一段时间刷新一下读取数据库,看看有没有更新,有就推送,没有就继续监听,这个你可以自己设置更新时间。

如何使用PHP实时监控Linux服务器的cpu,内存,硬盘信息

1,Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息。但是对于双核的cpu,在cpuinfo中会看到两个cpu。常常会让人误以为是两个单核的cpu。

其实应该通过Physical

Processor

ID来区分单核和双核。而Physical

Processor

ID可以从cpuinfo或者dmesg中找到.

flags

如果有

ht

说明

支持超线程技术

判断物理CPU的个数可以查看physical

id

的值,相同则为同一个物理CPU

2,查看内存大小:

cat

/proc/meminfo

|grep

MemTotal

3,其他一些可以查看详细

linux系统

信息的命令和方法:

uname

-a

#

查看内核/操作系统/

CPU信息

的linux系统信息命令

head

-n

1

/etc/issue

#

查看操作系统版本,是数字1不是字母L

cat

/proc/cpuinfo

#

查看CPU信息的linux系统信息命令

hostname

#

查看计算机名的linux系统信息命令

lspci

-tv

#

列出所有

PCI设备

lsusb

-tv

#

列出所有USB设备的linux系统信息命令

lsmod

#

列出加载的内核模块

env

#

查看

环境变量

资源

free

-m

#

查看内存使用量和

交换区

使用量

df

-h

#

查看各分区使用情况

du

-sh

#

查看指定目录的大小

grep

MemTotal

/proc/meminfo

#

查看内存总量

grep

MemFree

/proc/meminfo

#

查看空闲内存量

uptime

#

查看系统

运行时间

、用户数、负载

cat

/proc/loadavg

#

查看系统负载磁盘和分区

mount

|

column

-t

#

查看挂接的分区状态

fdisk

-l

#

查看所有分区

swapon

-s

#

查看所有

交换分区

hdparm

-i

/dev/hda

#

查看磁盘参数(仅适用于

IDE设备

)

dmesg

|

grep

IDE

#

查看启动时IDE设备检测状况网络

ifconfig

#

查看所有网络接口的属性

iptables

-L

#

查看防火墙设置

route

-n

#

查看

路由表

netstat

-lntp

#

查看所有监听端口

netstat

-antp

#

查看所有已经建立的连接

netstat

-s

#

查看

网络统计

信息进程

ps

-ef

#

查看所有进程

top

#

实时显示

进程状态

用户

w

#

查看活动用户

id

#

查看指定用户信息

last

#

查看

用户登录

日志

cut

-d:

-f1

/etc/passwd

#

查看系统所有用户

cut

-d:

-f1

/etc/group

#

查看系统所有组

crontab

-l

#

查看当前用户的计划任务服务

chkconfig

–list

#

列出所有系统服务

chkconfig

–list

|

grep

on

#

列出所有启动的系统服务程序

rpm

-qa

#

查看所有安装的软件包

cat

/proc/cpuinfo

:查看CPU相关参数的linux系统命令

cat

/proc/partitions

:查看linux硬盘和分区信息的系统信息命令

cat

/proc/meminfo

:查看linux系统内存信息的linux系统命令

cat

/proc/version

:查看版本,类似uname

-r

cat

/proc/ioports

:查看设备io端口

cat

/proc/interrupts

:查看中断

cat

/proc/pci

:查看pci设备的信息

cat

/proc/swaps

:查看所有swap分区的信息

php中有没有什么方法可以实现实时监听数据库中的某张表的变化

最好的办法是,在应用程序生命周期内,对于数据库设置有事件钩子,用于监听程序对于数据库的操作。这样非常方便处理逻辑流程。

1 - 表的数据变化

表数据发生了变化,毫无疑问是写操作,包括以下几种情形:

新建条目 create

更新条目 update

删除条目 delete

以上三种都是写操作,会对表数据写入。

2 - 事件钩子

既然需要实时监控,那么每个数据库的操作,都需要考虑在内,这是全局的监听。

以laravel的Eloquent ORM 模型触发事件,允许你挂接到模型生命周期的如下节点: retrieved、creating、created、updating、updated、saving、saved、deleting、deleted、restoring 和 restored。事件允许你每当特定模型保存或更新数据库时执行代码。每个事件通过其构造器接受模型实例。

模型内添加事件监听钩子

如果重用率很高,那么使用观察者 Observer 方式进行监听更为高效。

Laravel Observer

结语

上面的方法要求读者有laravel框架的使用基础,对于构建中大型应用非常有利。


网站栏目:php实时监控数据,php 监控
文章网址:http://hbruida.cn/article/phgdoj.html