|
|
8 месяцев назад | |
|---|---|---|
| api | 8 месяцев назад | |
| deps | 8 месяцев назад | |
| examples | 8 месяцев назад | |
| tests | 8 месяцев назад | |
| .gitignore | 8 месяцев назад | |
| .gitmodules | 8 месяцев назад | |
| CREDITS | 8 месяцев назад | |
| EXPERIMENTAL | 8 месяцев назад | |
| README.md | 8 месяцев назад | |
| config.m4 | 8 месяцев назад | |
| config.w32 | 8 месяцев назад | |
| ebpf.cpp | 8 месяцев назад | |
| ebpf.php | 8 месяцев назад | |
| php_ebpf.h | 8 месяцев назад | |
| wrapper.h | 8 месяцев назад |
phbpf 是专为 PHP 打造的,用于在 Linux 系统中高效创建内核级跟踪与操作程序。以 eBPF 技术为核心,提供丰富的工具与示例,帮助 PHP 开发者在熟悉的生态下,使用强大的内核观测与动态插桩能力。
+-------------+ +---------------------------+
| PHP Script | <----> | PHP Extension Module (C) |
+-------------+ +---------------------------+
|
v
+------------------+
| libbpf / BCC |
+------------------+
|
v
+------------------+
| eBPF Subsystem |
+------------------+
This example traces a disk I/O kernel function, and populates an in-kernel power-of-2 histogram of the I/O size. For efficiency, only the histogram summary is returned to user-level.
# php ./examples/tracing/bitehist.php
Tracing... Hit Ctrl-C to end.
^C
kbytes : count distribution
0 -> 1 : 3 | |
2 -> 3 : 0 | |
4 -> 7 : 211 |********** |
8 -> 15 : 0 | |
16 -> 31 : 0 | |
32 -> 63 : 0 | |
64 -> 127 : 1 | |
128 -> 255 : 800 |**************************************|
# 安装llvm / bcc / clang 等
例如 Ubuntu:
sudo apt install bpfcc-tools linux-headers-$(uname -r)
更多系统参考:https://github.com/iovisor/bcc/blob/master/INSTALL.md
git clone --recursive https://git.yunzhihui.ltd/root/phbpf.git
cd phbpf
phpize
./configure
make && sudo make install
# 配置 php.ini
echo "extension=ebpf.so" >> php.ini
# 运行示例
php examples/hello_world.php