㈠ php程序,如何監控內存情況
看到有人寫透視寶做php監控的原理圖,跟你分享下。我估計大家做的方式都是差不多。
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請求
1.需要用php循環一個目錄的文件數量.然而文件數量會不定時的添加....
答:在服務端建立一個根據需要進行循環的PHP腳本就可以。 猜測一下,您的第二個問題,是不是想進行相關檢測以避免重復觸發這個腳本。 實際上,不建議由用戶行為觸發這個腳本,無論是服務端代碼,還是客戶端的非同步Ajax。
㈢ 請問php如何實現實時監控文件.
在服務端建立一個根據需要進行循環的PHP腳本就可以。
猜測一下,您的第二個問題,是不是想進行相關檢測以避免重復觸發這個腳本。
實際上,不建議由用戶行為觸發這個腳本,無論是服務端代碼,還是客戶端的非同步Ajax。
如果要用PHP腳本進行不停的循環監控,請聯系運維人員,伺服器啟動,即在服務端開始運行這個腳本,他們會向您提供解決方案的。
真正的建議是,如果有任何可能,都不要使用PHP腳本利用循環代碼進行服務端的監控。
不得不承認,這個方面PHP的穩定性還差一些,Java或許可以這么做,PHP就比較痛苦了。
比較可能的辦法是請運維人員幫忙,通報監控邏輯,然後請他安裝各種觸發條件調用相應的PHP代碼。
如果堅持使用PHP腳本進行相關工作,有兩個建議給您:
盡快釋放資源,無論腳本使用了什麼資源,包括文件、內存、資料庫等等,都盡快釋放,這種地方可萬萬不能偷懶,否則就是自虐了。
在這個腳本中進行獨立的手工日誌輸出,任何一層循環的入口都要進行記錄,這樣在監控失敗的時候才有辦法查找問題。
㈣ 監視php站點代碼是否被人改動過。使代碼被更改時讓我知道。有什麼方法
樓主,如果你的網站只是你個人管理,並且你的IP是固定的【一段時間內】,那麼你可以通過限制IP來確定文件的訪問許可權。
如果php腳本截獲了一個與你預先設定的IP不符的地址,那麼就應該立刻發郵件提醒你,截獲該IP的PHP文件名稱,或者通過寫網站運行日誌的方式,將可疑行為記錄到文本文件中
以上方法可以用於後台php文件的安全防範;
前台呢?
不太好處理,看到樓主的問題,應該是伺服器被攻破了,那麼更好的辦法應該是從伺服器安全方面入手,比如限制文件的讀寫許可權等
㈤ 如何使用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
#
查看各分區使用情況
-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怎樣實現資料庫監控功能
你可以找找這個文章
利用Ajax實現長連接(模擬推送)
㈦ 如何監控文件夾里內容是否變化 php
可以根據原文件的md5值或者修改時間來比較啊!不同就變化了啊!
㈧ 如何使用監控寶監控php-fpm狀態
在開始之前,請確保已經開啟php-fpm的status。
一、創建收集數據腳本
新建腳本/home/sh/monitor_fpm.sh,並添加到cronjob,每五分鍾運行一次。腳本代碼為:
fpm_status=$(curl -s http://www.centos.bz/fpm_status)
start_since_now=$(echo "$fpm_status" | awk -F':' '/start since/{gsub(/ /,"",$2);print $2}')
listen_queue=$(echo "$fpm_status" | awk -F':' '/^listen queue:/{gsub(/ /,"",$2);print $2}')
idle_processes=$(echo "$fpm_status" | awk -F':' '/idle processes/{gsub(/ /,"",$2);print $2}')
active_processes=$(echo "$fpm_status" | awk -F':' '/^active processes:/{gsub(/ /,"",$2);print $2}')
total_processes=$(echo "$fpm_status" | awk -F':' '/total processes/{gsub(/ /,"",$2);print $2}')
accepted_conn_now=$(echo "$fpm_status" | awk -F':' '/accepted conn/{gsub(/ /,"",$2);print $2}')
max_listen_queue=$(echo "$fpm_status" | awk -F':' '/max listen queue/{gsub(/ /,"",$2);print $2}')
max_active_processes=$(echo "$fpm_status" | awk -F':' '/max active processes/{gsub(/ /,"",$2);print $2}')
max_children_reached=$(echo "$fpm_status" | awk -F':' '/max children reached/{gsub(/ /,"",$2);print $2}')
if [ -f "/tmp/accepted_conn78" ];then
accepted_conn_pre=$(cat /tmp/accepted_conn78)
((accepted_conn_inc=$accepted_conn_now - $accepted_conn_pre))
[[ $accepted_conn_inc -lt 0 ]] && accepted_conn_inc=0
else
accepted_conn_inc=0
fi
echo $accepted_conn_now > /tmp/accepted_conn78
if [ -f "/tmp/start_since78" ];then
start_since_pre=$(cat /tmp/start_since78)
((start_since_inc=$start_since_now - $start_since_pre))
[[ $start_since_inc -lt 0 ]] && per_request=0 || ((per_request=$accepted_conn_inc/$start_since_inc))
else
per_request=0
fi
echo $start_since_now > /tmp/start_since78
echo "<pre>
accepted_conn:$accepted_conn_inc
listen_queue:$listen_queue
idle_processes:$idle_processes
active_processes:$active_processes
total_processes:$total_processes
per_request:$per_request
max_listen_queue:$max_listen_queue
max_active_processes:$max_active_processes
max_children_reached:$max_children_reached
</pre>" > /home/www.centos.bz/web/php_status.html
二、到監控寶添加自定義監控
1、點擊網站頭部的創建監控項目,拉到底部,選擇創建自定義監控,再點擊創建自定義監控規則,
2、基本信息填寫
1
3、規則指標添加
2
3、添加php請求圖
3
4、添加php進程圖
4
5、添加php最大值圖
5
6、點擊完成,輸入監控fpm的頁面
6
完成了以上步驟之後,過一段時間就可以看到php-fpm的狀態統計信息了。
㈨ php 檢測源代碼是否被改動過和是否項目中有增加或刪除的文件的實現思路
如果想自己做, hashtable是一定的
建一個hashtable, 儲存當前內容, 同時該hashtable的id也同樣可以用於作為文件功能等記錄的id之用, 然後無論是windows還是linux都可以cron的,去做一個php文件去匹配吧, 文件修改時間無所謂的, md5(file)更有意義
如果單純使用php, 遍歷目錄是必須的, 無論哪個os都提供文件動作的監控能力,但是這不在php的工作范圍內,所以無法實現所謂的監控,你可以看看同步類軟體,無論哪個操作系統都是直接去os的基層拿現成的東西來用,不用特地耗費資源去自己不斷遍歷目錄監控的,
svn/cvs是主動提交改動的, 而所謂監控,那就是被動形式了,只有在改動時才有動作的叫監控,
你要php實現源碼監控,一句話,不可能,只能做遞歸/迭代, 用hashtable處理並不斷操作hashdb
ps:文件功能你們都不寫進注釋嗎,注釋本來就有這種功能, 比如phpdoc-_
㈩ 如何通過監控 php-fpm status排查問題
明:
php-fpm和nginx一樣,內建了個狀態頁,可以通過該狀態頁了解監控php-fpm的狀態
具體:
1. php-fpm.conf開用php-fpm狀態功能
# grep pm.status_path /usr/local/php/etc/php-fpm.conf
pm.status_path = /phpfpm_status
默認情況下為/status,當然也可以改成/phpfpm_status等,我這里是改成/phpfpm_status啦
2. nginx配置
在默認主機裡面加上location或者你希望能訪問到的主機裡面。
server {
listen 80;
server_name 127.0.0.1;
location /nginx_status {
stub_status on;
access_log off;
}
location /phpfpm_status {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
}
3. 重啟nginx、php-fpm使配置生效
# /etc/init.d/nginx restart
# /etc/init.d/php-fpm restart