当前位置:首页 > PHP

php实现监听

2026-03-12 20:41:38PHP

监听文件变化

使用PHP内置的inotify扩展可以监听文件系统事件。需要确保服务器安装了inotify扩展并启用。

$watcher = inotify_init();
$watchDescriptor = inotify_add_watch($watcher, '/path/to/directory', IN_MODIFY);

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

监听网络端口

通过socket扩展可以创建TCP/UDP服务器监听端口。

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

while (true) {
    $client = socket_accept($socket);
    $data = socket_read($client, 1024);
    echo "Received: $data";
    socket_close($client);
}

监听数据库变化

使用数据库触发器结合PHP轮询可以实现监听表变化。

$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$lastId = 0;

while (true) {
    $stmt = $pdo->query("SELECT * FROM table WHERE id > $lastId ORDER BY id DESC LIMIT 1");
    if ($row = $stmt->fetch()) {
        $lastId = $row['id'];
        echo "New record: " . json_encode($row);
    }
    sleep(1);
}

监听进程状态

通过proc_openstream_select可以监听子进程输出。

$descriptors = [
    0 => ["pipe", "r"],
    1 => ["pipe", "w"],
    2 => ["pipe", "w"]
];

$process = proc_open('long-running-command', $descriptors, $pipes);

while (true) {
    $read = [$pipes[1]];
    $write = $except = null;

    if (stream_select($read, $write, $except, 0, 200000) > 0) {
        echo fread($pipes[1], 8192);
    }

    if (!proc_get_status($process)['running']) {
        break;
    }
}

监听Redis订阅

使用phpredis扩展可以监听Redis的发布/订阅频道。

php实现监听

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->subscribe(['channel_name'], function ($redis, $channel, $message) {
    echo "Received $message from $channel\n";
});

标签: php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现websocket

php实现websocket

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

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…