2009-06-26 14 views
2

我试图实现一个套接字服务器,将运行在大多数共享的PHP托管。PHP套接字或Python,Perl,Bash套接字?

要求是可以自动安装,启动和停止Socket服务器,而无需用户执行任何操作。无论套接字服务器是用什么语言编写的,只要它可以在全球大部分共享主机上运行。

目前,我已经写了用PHP套接字服务器实现的对象缓存: http://code.google.com/p/php-object-cache/

来源:http://code.google.com/p/php-object-cache/source/browse/trunk/socket.class.php

然而,PHP已经被用插座支持编译,并没有太多的服务器上运行与PHP套接字支持。

我真正的问题是:我应该使用什么语言来实现套接字服务器,并且具有最大的平台支持并且可以在PHP中调用。

换句话说,什么脚本语言是PHP启用的服务器上最常见的?

或者我必须以编译语言编写套接字服务器才能使其适用于所有服务器?

让我们暂时把IIS留在图片中,只是Linux服务器。我不认为许多PHP网站都运行在IIS上...


编辑:

对不起,我想我的问题是不明确的。

我想知道,什么语言是最适合用于创建给出以下要求的插座服务器:

语言必须在共享的主机,沿着PHP在Apache中(未CLI)运行存在。 套接字支持必须本地启用,而不是通过所需的扩展。 PHP必须能够将deamon写入文件以及启动和停止deamon。

我不是要求一个单一服务器的解决方案。它必须在大多数共享托管服务器上本地运行。

+0

为什么你想从PHP调用它?一个服务器通常不会被调用,但是一直运行在一个deamon上。 – 2009-06-26 09:21:30

+0

我不知道有多少“许多”,但我从一家主要提供商托管,它是IIS,并有非常好的PHP支持。 – 2009-06-26 11:37:12

回答

2

这实际上取决于安装要求是什么。通常编写套接字服务器的最简单和最标准的方法是编写一个inet.d service。这是我的unix机器上的标准守护进程,它将分叉进程并处理套接字级别细节。如果你希望你的服务在Unix上运行在低于​​1024的端口上,这是完成它的更简单的方法之一。但是,初始安装需要root来配置inet.d.

如果您共享主机允许PHP执行exec调用,那么您可以通过这种方式启动守护进程。请记住,它需要运行在1024以上的端口。接下来需要确定您的程序是多线程还是多进程。通常Java程序是多线程的,而Apache实例通常是多进程的。

最后,主机可能有防火墙。这有助于防止共享主机帐户成为bot-net的一部分。如果防火墙规则不允许连接到其他端口,您将无法远程连接到它。

7

任何服务器都可以在Linux下由PHP停止或启动。当然,如果您运行的服务器接受来自Internet的套接字,那么您可以直接连接到服务器并告诉它关机。无需通过PHP!至于“从PHP启动服务器”,那么在Linux下,任何东西都可以从任何东西开始。掏腰包开始进程并让它进入守护进程模式。

我是一个Perl粉丝。毫不奇怪,有一个 Perl Daemon library available

如果您的托管服务提供商提供Perl脚本支持,那么您可能有权使用“系统”或反引号command。那么你很可能会启动一个守护进程。但是,您将需要使用非特权端口(超过1024)。另外,你应该问他们第一!他们可能不会感激你在服务器上捆绑端口。这绝对是您应该与您的托管服务提供商讨论的问题。