apache用什么处理php,是否可以用PHP编写Apache协议处理程序?

我想知道是否以及如何可以用PHP为Apache 2编写一个自定义的“协议处理程序”(在自定义端口监听)?

在C和mod_perl中,您可以编写所谓的“协议处理程序”,它拦截早期的Apache阶段(在客户端套接字连接被accept()之后,但在向其写入任何内容之前),并可以处理

FTP

SMTP

例如,我有一个简单的mod_perl处理程序,我想将它移植到PHP(比较内存使用情况-因为我的mod_perl-handler需要每个孩子有2000万个内存)。我的处理程序侦听端口843并将字符串策略写入客户端套接字:

package SocketPolicy;

# Run: semanage port -a -t http_port_t -p tcp 843

# And add following lines to the httpd.conf

# Listen 843

#

# PerlModule SocketPolicy

# PerlProcessConnectionHandler SocketPolicy

#

use strict;

use warnings FATAL => 'all';

use APR::Const(-compile => 'SO_NONBLOCK');

use APR::Socket();

use Apache2::ServerRec();

use Apache2::Connection();

use Apache2::Const(-compile => qw(OK DECLINED));

use constant POLICY =>

qq{<?xml version="1.0"?>

/p>

"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

\0};

sub handler {

my $conn = shift;

my $socket = $conn->client_socket();

my $offset = 0;

# set the socket to the blocking mode

$socket->opt_set(APR::Const::SO_NONBLOCK => 0);

do {

my $nbytes = $socket->send(substr(POLICY, $offset),

length(POLICY) - $offset);

# client connection closed or interrupted

return Apache2::Const::DECLINED unless $nbytes;

$offset += $nbytes;

} while ($offset < length(POLICY));

my $slog = $conn->base_server()->log();

$slog->warn('served socket policy to: ', $conn->remote_ip());

return Apache2::Const::OK;

}

1;

谢谢,

亚历克斯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值