当前位置:首页 > PHP

php实现监听

2026-02-14 22:01:12PHP

监听文件变化

在PHP中实现文件监听可以通过inotify扩展完成。该扩展基于Linux内核的文件系统事件监控机制,能够实时检测文件或目录的变更。

安装inotify扩展:

pecl install inotify

基础监听示例:

$fd = inotify_init();
$watch_descriptor = inotify_add_watch($fd, '/path/to/dir', IN_MODIFY);

while (true) {
    $events = inotify_read($fd);
    foreach ($events as $event) {
        echo "File {$event['name']} was modified\n";
    }
}

监听端口连接

使用socket扩展可以创建TCP服务监听指定端口:

php实现监听

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, '0.0.0.0', 8080);
socket_listen($socket);

while ($client = socket_accept($socket)) {
    $input = socket_read($client, 1024);
    echo "Received: $input";
    socket_write($client, "HTTP/1.1 200 OK\r\n\r\nHello");
    socket_close($client);
}

监听数据库变更

通过MySQL的binlog可以实现数据库变更监听:

$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$pdo->exec("SET GLOBAL binlog_format = 'ROW'");

$stmt = $pdo->query("SHOW BINARY LOGS");
while ($log = $stmt->fetch()) {
    // 处理binlog变更
}

事件驱动监听

使用libeventReactPHP实现事件驱动监听:

php实现监听

ReactPHP示例:

$loop = React\EventLoop\Factory::create();
$socket = new React\Socket\Server('127.0.0.1:8080', $loop);

$socket->on('connection', function ($conn) {
    $conn->on('data', function ($data) use ($conn) {
        $conn->write("Echo: $data");
    });
});

$loop->run();

进程间通信监听

通过消息队列实现进程通信监听:

$queue = msg_get_queue(ftok(__FILE__, 'a'));
msg_receive($queue, 0, $msgtype, 1024, $message);
echo "Received message: $message";

定时任务监听

使用pcntlticks实现定时监听:

declare(ticks=1);
pcntl_signal(SIGALRM, function() {
    echo "Timer triggered\n";
    pcntl_alarm(5); // 每5秒触发
});
pcntl_alarm(5); // 初始触发

每种监听方式适用于不同场景,文件监听适合日志分析,端口监听适合构建服务,数据库监听适合数据同步,事件驱动适合高并发场景,进程通信适合分布式系统,定时任务适合周期检测。

标签: php
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaS…

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (in…

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE o…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Rat…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…