当前位置:首页 > PHP

php 实现端口监听

2026-02-15 21:11:27PHP

PHP 实现端口监听的方法

PHP 可以通过多种方式实现端口监听,以下是几种常见的方法:

使用 socket 函数

PHP 的 socket 扩展提供了一系列函数用于创建和管理套接字连接,可以实现基本的端口监听功能。

$host = '127.0.0.1';
$port = 8080;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $port);
socket_listen($socket);

echo "Listening on $host:$port\n";

while (true) {
    $client = socket_accept($socket);
    $message = "Hello, client!\n";
    socket_write($client, $message, strlen($message));
    socket_close($client);
}

socket_close($socket);

使用 stream_socket_server

stream_socket_server 是另一种实现端口监听的方式,基于流式套接字。

$host = '127.0.0.1';
$port = 8080;

$server = stream_socket_server("tcp://$host:$port", $errno, $errstr);

if (!$server) {
    die("Error: $errstr ($errno)");
}

echo "Listening on $host:$port\n";

while ($client = stream_socket_accept($server)) {
    fwrite($client, "Hello, client!\n");
    fclose($client);
}

fclose($server);

使用 ReactPHP

ReactPHP 是一个异步事件驱动的 PHP 库,适合构建高性能的网络应用。

require 'vendor/autoload.php';

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

$socket->on('connection', function (React\Socket\ConnectionInterface $connection) {
    $connection->write("Hello, client!\n");
    $connection->on('data', function ($data) use ($connection) {
        $connection->write("You said: $data");
    });
});

echo "Listening on 127.0.0.1:8080\n";
$loop->run();

使用 Ratchet

Ratchet 是一个 WebSocket 库,可以用于实现实时通信应用。

php 实现端口监听

require 'vendor/autoload.php';

use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8080
);

$server->run();

注意事项

  • 确保 PHP 安装了必要的扩展(如 socket 扩展)。
  • 对于生产环境,建议使用成熟的框架或库(如 ReactPHP 或 Ratchet)。
  • 考虑使用 Supervisor 或其他进程管理工具来保持服务的稳定性。

以上方法可以根据具体需求选择,简单的端口监听可以使用原生 PHP 函数,复杂的应用则建议使用专门的库或框架。

标签: 端口php
分享给朋友:

相关文章

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php 实现md5

php 实现md5

使用 PHP 内置函数实现 MD5 PHP 提供了 md5() 函数,可以直接计算字符串的 MD5 哈希值。该函数接受一个字符串参数,返回 32 字符的十六进制哈希值。 $string = "H…

php实现秒杀

php实现秒杀

PHP实现秒杀功能的关键技术 秒杀系统需要解决高并发、数据一致性、系统稳定性等问题。以下是PHP实现秒杀功能的核心技术方案: 数据库优化 使用InnoDB引擎的行级锁和事务特性,确保数据一致性。商品…

php实现抽奖程序

php实现抽奖程序

PHP实现抽奖程序 基本抽奖逻辑 创建一个简单的抽奖程序需要定义奖品、中奖概率及随机选择逻辑。以下是一个基础实现示例: <?php // 奖品配置(奖品名称 => 概率) $prizes…