蜜汁青梅txt:让PHP来搞定一切

来源:百度文库 编辑:中财网 时间:2024/03/29 08:48:18


标题: 让PHP来搞定一切! [打印本页]

作者: zvxcv     时间: 2006-12-27 10:22     标题: 让PHP来搞定一切!

这几天思考PHP问题,突然产生了一个绝妙的想法。可以将PHP作为Linux内核的第一个用户进程init进程来启动,将整个Linux置于PHP脚本的运行、管理和监控之下,除了PHP的最佳搭挡:MySQL,系统中不运行、不需要也不存在任何其它的可执行文件,也不需要任何动态链接库,系统所需要的一切功能和服务将会用PHP脚本来实现。这一系统将会通过WEB界面来操作、控制、和开发,除了PHP所必须的/etc/php.ini文件,系统所有的配置信息和日志信息均记录在MySQL表中,这样就完全简化了Linux文件系统的目录结构,系统中只需要/boot,/sbin/,/etc,/www/,/mysql这些目录,通过MySQL表格来访问配置信息和日志信息比文本文件效率更高。

之所以会有这种想法,是因为现在的操作系统日益庞大,个人的精力很难穷尽和把握其中的一切。然而对于由一个内核,两个程序组成的系统来说,个人将完全有能力把握这一整体。既然两个程序就能搞定我所需要的,为什么还要安装成百上千个软件包呢?

具体的实施方案为,编制一个与Linux内核操作系统调用接口的PHP扩展模块,以FASTCGI配置静态编绎PHP,将所有所需要的模块和库静态编绎到PHP程序之中,MySQL也进行静态编绎,这样系统将不需要任何动态链接库支持。将Linux系统中init可执行文件连接到php可执行文件,定制/etc/php.ini,将auto_prepend_file参数指向我们的PHP初始化脚本。这样PHP作为Linux内核的初始化进程启动时就能首先执行初始化脚本。这一脚本将通过操作系统调用接口直接配置网络适配器,防火墙,内核参数,挂载文件系统,启动TUX,启动MySQL,启动自身另外的PHP FASTCGI服务器进程,最后驻留成为超级服务器进程,用来调控所有的端口服务。

不需要任何其它HTTP服务器支持,完全通过PHP脚本就能打造成一个高性能的PHP+MySQLWEB服务器。大家信不信?系统进行WEB服务时,首先通过TUX进行高速静态页面服务,对于PHP脚本请求将通过TUX传递给用PHP脚本写的超级服务器进程,超级服务器再以FASTCGI协议传递给PHPFASTCGI服务器进程执行脚本,这样就获得了与普通配置完全等价的PHP脚本运行环境,可以运行任何PHP站点程序。

常用的DNS服务,DHCPD服务,TFTP服务,SMTP服务,NFS服务,甚至samba服务,也会由PHP脚本来实现,用PHP脚本来实现这些功能要比C语言容易得多,况且有现成的源代码可以参考,虽然性能有所下降,另外很容易在此基础上形成服务器集群,可以形成MOSIX内核集群,无盘服务器集群,所有的一切只需要用PHP脚本来实现,无需GCC这些庞大的编绎环境。

PHP和MySQL是跨平台的,这种模式也完全可以推广到别的操作系统内核,至少FreeBSD内核是完全可行的。我认为,Linux内核,PHP内核,MySQL数据库引擎是目前最值得深入研究的系统软件,它们的组合能够完全满足计算机信息管理的需要。

我认为PHP的优越之处在于它的结构与C语言的相似度非常好,而大部分系统软件都是用C而不是C++写成。虽然PHP具有面向对象的程序结构,但并不必须采用这种结构,它可以忠实地与各种各样的C语言运行库接口,能够完全以C语言的原始风格来编写程序。如果用Perl,Python或Ruby来构造这样的极简系统,肯定不如PHP这么简单方便。

[ 本帖最后由 zvxcv 于 2006-12-28 09:34 编辑 ]
作者: HonestQiao     时间: 2006-12-27 11:01

你的比http://bbs.chinaunix.net/viewthread.php?tid=16004这篇好。

这样子的想法,用来作一个专有系统是非常不错的也是很适合的。
作者: bs     时间: 2006-12-27 11:06

至少要考虑一下
备份、传输、数据同步、负载均衡等等
作者: HonestQiao     时间: 2006-12-27 11:06

  另外,如果真的想要实现这个超级服务器系统,不是想像的一个内核两个程序那么简单,可以说是一个小型的系统工程了。

作者: 夜猫子     时间: 2006-12-27 13:22

楼主看来像是极端的脚本技术原教旨主义分子
作者: achun.shx     时间: 2006-12-27 13:31

哈哈,好想法,不过首先要解决用户登录和远程管理的问题呀!
作者: HonestQiao     时间: 2006-12-27 13:33



QUOTE:原帖由 夜猫子 于 2006-12-27 13:22 发表
楼主看来像是极端的脚本技术原教旨主义分子
作者: yueliangdao0608     时间: 2006-12-27 13:49



QUOTE:原帖由 夜猫子 于 2006-12-27 13:22 发表
楼主看来像是极端的脚本技术原教旨主义分子
跟着大伙支持。
作者: geel     时间: 2006-12-27 15:23

那请问谁来托管php和mysql还有什么fastcgi进程,谁又负责系统调用跟内核打交道,谁负责把php程序代码读到内存,把php解释器写到内核里?平时常用的c函数也不能用,您这工作量够大的

[ 本帖最后由 geel 于 2006-12-27 15:35 编辑 ]
作者: gydoesit     时间: 2006-12-27 15:35

楼主确定牛~~~~PF
作者: atyu30     时间: 2006-12-27 15:35

学习
作者: james.liu     时间: 2006-12-27 17:20

我就等着用lz的成果拉。。。先泡妞去。。。
作者: zvxcv     时间: 2006-12-27 17:22     标题: 这一方案的可行性初步测试成功,令人鼓舞!

这一方案的可行性初步测试成功,令人鼓舞

首先需要编绎一个纯静态的PHP CGI程序,但编绎过程并不是一帆风顺的。首先phpconfigure脚本里面并没有生成纯静态PHP的参数,因此在configure过程之后,需要删除配置文件:main/php_config.php中HAVE_DLOPEN和HAVE_LIBDL这两个宏定义,以免引用不必要动态链接库。然后用make进行编绎,编绎成功后,所输出的可执行文件sapi/cgi/php仍然是一个动态链接程序。为了得到纯静态编绎的php文件,可以将make反馈信息最后包含libtool的这一行提取出来,写入一个文件,作为一个脚本。
/usr/local/src/php-4.4.4/libtool --silent --preserve-dup-deps --mode=link gcc -export-dynamic -g -O2 ...
将其中--silent参数换成-n,执行此脚本,这时将输出所要执行的连接命令,但并不执行,它的形式为:
gcc -g -O2 ...
将这一输出的命令写入一个新文件,将其中的-g改为-static,并删除“-ldl”这些对动态链接库的引用。
然后执行这个新脚本,就可以生成出纯静态的php可执行文件,如果strip其调试信息,其大小只有1817676字节。

接下来,将通过无盘启动的方式来测试将这一纯静态PHP作为init进程的可行性。

首先建立一个8M的空白文件php.img,在其上创建一个ext2文件系统,以loop方式挂载到某一目录下。在其上建立/dev、/etc、/sbin、/proc、usr/local/bin、/usr/local/lib这几个目录,在/dev中创建好console、ram、zero、null、mem这些少许几个必要设备,将编绎好的php拷入其usr/local/bin下,将其sbin/init符号链接或硬链接到usr/local/bin/php,然后创建usr/local/lib/php.ini文件,其内容可以简单的设为
[PHP]
auto_prepend_file = /etc/initrc.php
在etc/initrc.php中创建一些测试代码,来显示其执行过程。卸载安装目录,用gzip压缩其映象,然后传到TFTP服务器上。无盘启动采用dhcpd+tftp+pxelinux.0的软件组合,配置好无盘机有关的dhpcd.conf参数,在pxelinux.cfg/default中增加启动配置,
LABEL php
      KERNEL el-vmlinuz-2.4.21-32.EL #这是RHEL 3的缺省内核
      APPEND initrd=php.img.gz root=/dev/ram

最后在测试机器上进行网络启动, 启动完成后,就可以看到屏幕上显示/etc/initrc.php脚本所输出的内容,然后系统就进入PHP的标准输入状态,如果按CTRL+C强制PHP退出,系统就会产生INIT进程致命退出错误。

我测试的Linux是RHEL 3,所使用PHP的configure参数为:

configure --enable-fastcgi --with-zlib --enable-sockets--with-mime-magic --enable-pcntl --enable-sysvmsg --enable-sysvsem--enable-sysvshm --disable-cli --disable-shared

编绎一个纯静态的PHP是成功的关键,作为第一次尝试,我没有尝试加入更多的PHP模块,但是如果加入其它更多的模块,肯定会遇到更多棘手的问题需要克服。
作者: zvxcv     时间: 2006-12-27 17:28



QUOTE:原帖由 achun.shx 于 2006-12-27 13:31 发表
哈哈,好想法,不过首先要解决用户登录和远程管理的问题呀! 这一方案的绝妙之处就在于“用户登录和远程管理”全部可以用寻常网站的PHP编制方法与浏览器的交互来完成,不需要使用专门的协议或特别的处理。
作者: bs     时间: 2006-12-27 19:54

这和操作系统又有什么区别...
作者: mailjzwu_1     时间: 2006-12-28 01:50

这种情况适合专用系统,小型系统
特别好管理,但当你的系统足够大,如你的网站有几千万HTTP的访问量,有数百万个文件,有十亿行数据库,使用mysql就不适合了
运行效率还有待观察
作者: 越走越远     时间: 2006-12-28 08:59

等待中.................
作者: dulao5     时间: 2006-12-28 09:09

php如果正在运行如何升级呢?
远程登录的方法没看懂,是用php写shell吗?

貌似用作嵌入式环境是可行的.
作者: zvxcv     时间: 2006-12-28 09:27     标题: 最新进展

我现在用NFSROOT方式,而不再采用RAMDISKROOT方式来运行测试系统,不过需要重新配置和编绎Linux内核,配置好网卡驱动和启用内核IP配置和NFSROOT几个参数。还成功编绎了纯静态的MySQL,仍然需要编绎纯静态PHP所使用的技巧,实际只需要sql/mysqld这个可执行文件。

/etc/initrc.php可以采用如下的框架

if (posix_getpid() == 1) {
        ... # 直接通过操作系统调用接口而不是外部命令来直接配置Linux内核参数
        if (pcntl_fork() == 0) { # 启动PHP FASTCGI服务器
                posix_setuid(501);
                $env[‘PHP_FCGI_CHILDREN‘] = 10;
                $env[‘PHP_FCGI_MAX_REQUESTS‘] = 1000;
                echo "starting fastcgi server.\r\n";
                pcntl_exec(‘/usr/local/bin/php‘,array(‘-b‘,‘:8000‘), $env);
                echo "start fastcgi server FAILED!\r\n";
        }
        if (pcntl_fork() == 0) {
                echo "starting mysql server.\r\n";
                posix_setuid(502);
                pcntl_exec(‘/usr/local/bin/mysqld‘,array(‘--skip-innodb‘,‘--skip-name-resolve‘));
                echo "start mysql server FAILED!\r\n";
        }
        sleep(1);
        if ($mydb = mysql_connect(‘localhost‘,‘user‘,‘password‘)) {
                echo "mysql server started.\r\n";
        }
        echo "READY.\r\n";

        # 最关键的就是在以下部分使用php sockets接口以单进程多工技术来写一个HTTP服务器,来与fastcgi服务器通信,当然也必须能完成简单静态文件服务。
        ...
}
/etc/initrc.php不仅是系统初始化的脚本,也是每一个FASTCGI请求脚本的初始化脚本,因此我们可以把常用的过程定义在此文件中,对每一个脚本共享。
将mmcache静态编绎到PHP中可以提高initrc.php的加载执行效率,而且是必须采用的手段。

进一步的设想是将PHP和MySQL编绎在一起,做成单一可执行文件,这样PHP和MySQL可以共享原动态链接库的大量代码,进一步降低系统总的文件尺寸,用一个内核,一个程序来搞定一切!更绝的是,可以让PHP能够通过MySQL中更低级的函数接口来直接访问MySQL数据库,而不必总是通过SQL语言来访问MySQL数据库,这样可以获得更好的性能。而对于MySQL来说,设法让MySQL表达式能够使用PHP里面的某些函数,形成一种互惠互利的关系。

对PHP来说,还有一个地方值得注意的是Windows的PHP ISAPI模块使用了PHP的多线程运行模式,而在Linux下,我们能否让PHP FASTCGI服务器以多线程模式来运行?

我觉得对于传统的UNIX架构,适合于开发,而对于某种具体应用来说,就显得太复杂、太庞大了。一个操作系统是某种编程语言的世界,UNIX操作系统是C语言的世界,C语言是所有高级语言的基础,UNIX是所有高级操作系统之母。让我们有纯粹PHP的世界,纯粹Java世界,纯粹PERL世界,纯粹Python、纯粹Ruby世界,用一个内核+一个解释器彻底搞定一切。

[ 本帖最后由 zvxcv 于 2006-12-28 09:50 编辑 ]
作者: HonestQiao     时间: 2006-12-28 09:50



QUOTE:原帖由 zvxcv 于 2006-12-28 09:27 发表
我现在用NFSROOT方式,而不再采用RAMDISK ROOT方式来运行测试系统,不过需要重新配置和编绎Linux内核,配置好网卡驱动和启用内核IP配置和NFSROOT几个参数。还成功编绎了纯静态的MySQL,仍然需要编绎纯静态PHP所使 ... 真的是很好地想法,但是还是要套用前面的话:

QUOTE:原帖由 夜猫子 于 2006-12-27 13:22 发表
楼主看来像是极端的脚本技术原教旨主义分子 目前的系统是由专有化趋于灵活多样化,你现在要再次退回专有化。
作者: zvxcv     时间: 2006-12-28 10:09



QUOTE:原帖由 夜猫子 于 2006-12-27 13:22 发表
楼主看来像是极端的脚本技术原教旨主义分子 我的确具有某种追求纯粹境界的心理,想追求一个“纯洁”的操作系统。

可惜这个世界上纯洁的东西太少。

好不好就要看大家对“纯粹”和“纯洁”如何判断了。
作者: zvxcv     时间: 2006-12-28 10:20



QUOTE:原帖由 dulao5 于 2006-12-28 09:09 发表
php如果正在运行如何升级呢?
远程登录的方法没看懂,是用php写shell吗?

貌似用作嵌入式环境是可行的. 升级运行中PHP脚本是最方便不过的事情,直接通过浏览器上传或TUXFTP覆盖就可以了,当然也可以用PHP写一个FTP服务器或在HTTP服务器上实现WEBDAV协议。如果你要升级运行中的可执行文件,非要重启程序或操作系统不可。这一系统不需要telnet或ssh这些远程登录方式,通过浏览器与PHP脚本进行超文本交互是比文本控制台命令行交互更高级的方法。这一系统不存在shell的概念,因为它本身就是shell,并且所有的一切功能都在自身的基础上完成。
作者: boyhyc     时间: 2006-12-28 10:24

真是比较有创意的想法……
作者: zvxcv     时间: 2006-12-28 10:39



QUOTE:原帖由 HonestQiao 于 2006-12-28 09:50 发表
真的是很好地想法,但是还是要套用前面的话:
目前的系统是由专有化趋于灵活多样化,你现在要再次退回专有化。 只是这个世界变得越来越乱,越来越成为一个大杂烩。

这一系统模式并不缺乏灵活性,在某些方面基至有过之而无不及,具有系统的整体优势。
现有Linux环境,灵活是灵活,程序开发工具,各种仿真运行平台应有尽有,每个人都可以更取所需,各尽所能。
但对于一个无人值守的服务器来说,犯不着使用这种能够包罗万象的执行环境。
而且个人的精力有限,不可能精通所有的编程语言和开发工具,所以有必要确定一个方向,纯化自己的技能。
如果你能够用PHP来做好一件事,为什么还要借助于别的语言和工具呢?
如果你能够用PHP编好一个网站,为什么还要借助于别的脚本语言呢?

[ 本帖最后由 zvxcv 于 2006-12-28 10:41 编辑 ]
作者: HonestQiao     时间: 2006-12-28 10:46



QUOTE:原帖由 zvxcv 于 2006-12-28 10:39 发表


只是这个世界变得越来越乱,越来越成为一个大杂烩。

这一系统模式并不缺乏灵活性,在某些方面基至有过之而无不及,具有系统的整体优势。
现有Linux环境,灵活是灵活,程序开发工具,各种仿真运行平台应有 ... 那话又说回来,做为一个可管理的系统,按照你的思路实现了,最终,还是会庞大起来。

而且很多人可能是专在上面了,脱离了之后,几乎就没有什么用途了。

除非你可以把世界重新实现一次。


作者: HonestQiao     时间: 2006-12-28 10:48

  而且正是因为个人精力有限,所以会存在系统管理员,数据库管理员,等等专职的人员。

虽然PHP可以做很多事情,但是我们不要强求PHP把所有的事情都大包大揽,那你的精力足够么?
作者: axgle     时间: 2006-12-28 10:59



QUOTE:原帖由 HonestQiao 于 2006-12-28 10:48 发表
而且正是因为个人精力有限,所以会存在系统管理员,数据库管理员,等等专职的人员。

虽然PHP可以做很多事情,但是我们不要强求PHP把所有的事情都大包大揽,那你的精力足够么?
作者: longwayway     时间: 2006-12-28 11:27

只能做技术方面的探讨,实际应用那是不大现实啦....
作者: Namelessxp     时间: 2006-12-28 11:35

又一个大轮子即将诞生?
作者: skyfish8u8     时间: 2006-12-28 11:37

学习了
作者: zvxcv     时间: 2006-12-28 11:37



QUOTE:原帖由 HonestQiao 于 2006-12-28 10:46 发表

那话又说回来,做为一个可管理的系统,按照你的思路实现了,最终,还是会庞大起来。

而且很多人可能是专在上面了,脱离了之后,几乎就没有什么用途了。

... 但是这一系统的“庞大”是有序的,它的有序性由PHP语言本身的结构来保障。用不同的语言来开发一个系统,那么这个系统的庞大就可能是无序的。现在的系统使用C语言写的服务器,使用各自不同的配置文件格式和配置方法,并且用多种脚本语言来相互辅助完成一项任务。在每一个方向上都会产生互不相关的复杂性。从C语言编绎出目标程序过程非常复杂,目标程序的配置文件往往又相当复杂,再加上复杂的应用程序脚本,处处都会遇到棘手的障碍。如果整个系统的开发和应用由一种语言和开发模式来全面约束,整个系统就会有序得多。

用类似的思想可以纯化X窗口系统,让X服务器作为系统第一进程来启动,将PHP和MySQL嵌入到X窗口服务器中,让PHP成为唯一窗口编程语言。
作者: cubzsd     时间: 2006-12-28 12:00

这和LINUX下的WEBMIN工具有区别吗?
作者: zvxcv     时间: 2006-12-28 13:04



QUOTE:原帖由 cubzsd 于 2006-12-28 12:00 发表
这和LINUX下的WEBMIN工具有区别吗? 最大的区别在于,“WebMin”是别人写的,当使用这一软件时,除了作者本人,使用者一般不了解也不需要了解其中的代码和执行过程。

我的这一构想使得每一个对操作系统有兴趣的人都可以跟据自己的需要和偏好来重构操作系统。在chinaunix这个论坛,不是还有人尝试用C和汇编来重写操作系统内核呢吗?PHP语言的强大能力,使得重构操作系统的设想,比那些想用C和汇编重写操作系统内核的人所面对的困难,要容易得多,也实用得多。当系统每一个运行细节我都非常清楚时,这难道不是一件很痛快的事情吗?

这一构想实际上彻底推翻了传统UNIX的配置和管理模式,无需懂得sh,csh,无需懂得各种UNIX命令,无需懂得gcc、make,无需懂得各样各样的配置文件格式,就能通过PHP来享用Linux强健的内核,何乐而不为呢?
作者: zvxcv     时间: 2006-12-28 13:21



QUOTE:原帖由 longwayway 于 2006-12-28 11:27 发表
只能做技术方面的探讨,实际应用那是不大现实啦.... 这要比哪些重建操作系统内核的计划要实用得多,很快我就要让这一系统能够运行Discuz这一论坛。用PHP编程,不管在哪一方面都要比C、C++方便得多。性能牺牲其实并不太大,脚本语言最低效的场合是进行数值计算,而对于大多数网络服务性应用,脚本语言只是一种粘合低层运行库的工具,动态解释过程开销并不大。
作者: zvxcv     时间: 2006-12-28 13:32



QUOTE:原帖由 HonestQiao 于 2006-12-28 10:48 发表
而且正是因为个人精力有限,所以会存在系统管理员,数据库管理员,等等专职的人员。

虽然PHP可以做很多事情,但是我们不要强求PHP把所有的事情都大包大揽,那你的精力足够么? 正是因为精力不够,所以我才会想把精力全部聚焦在Linux+PHP+MySQL这三大件之中,我不想被其它各种各样的配置文件和命令格式和接口方法所困扰。
作者: 刘五十三     时间: 2006-12-28 13:35

不错,lz做个网站提供文件下载,最好是刻录光盘就可以安装的。
作者: jervis0211     时间: 2006-12-28 14:29

气吞天地,如来神掌
作者: 夜猫子     时间: 2006-12-28 14:36

我感觉楼主在某些细节问题上有“洁癖”,适度的“洁癖”可以保证质量,但是过度了就会造成不必要的消耗
作为geek的消遣项目还挺好玩的,但是实际应用不乐观
作者: shaver     时间: 2006-12-28 14:48

想做就做呗,不用管别人怎么说,也不用管到底有多大必要性的问题
just for fan
作者: aaxron     时间: 2006-12-28 15:12

1、楼主努力吧。不管成功是否都值得去实现你的理想吧。可能以后成功走向商业化滴!
2、搞技术就是要有这样的精神!



好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
好好好好好好好好好 好好好好好好好好好好好好好 好好好  好好好好好好好好
好好好好好好好好好    好好好好好好好好好好 好好好好 好好好好好好好好
好好好好好好好好   好好好好好好好好好好好好 好好好好  好好好好好好好
好好好好好好好  好好好好好好好好好好好好好好好 好   好好 好好好好好
好好好好好  好 好好好好好好好好好好好好好  好好好 好好   好好好好
好好好好好好好好 好好好好好好好好好好好好   好好好   好好好好好好好
好好好好好好好   好好好好好好好好好好好好好 好  好 好好好好好好好好
好好好好好好好好好好 好好好好好好好好好好好好  好  好   好好好好好
好好好好好   好  好好好好好好好好好好好好 好好好好  好好好好好好好
好好好好 好好   好好好好好好好好好好好   好   好 好好好好好好好
好好好好好好好好  好好好好好好好好好好好 好  好好 好 好好好好好好好
好好好好好好好    好好好好好好好好好 好好 好好好好好 好好好好好好好
好好好好好好  好好   好好好好好好好 好  好好 好好 好好好好好好好
好好好好   好好好好    好好好好好好好好 好好好   好好好好好好好
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
作者: crazysoul     时间: 2006-12-28 16:05

很明显,楼主是被“多样化”语言给调戏了,很多刚学脚本的人都会经历的阶段。

“好不容易地,我学会了PHP,为什么还要学HTML?为什么还要学SQL,为什么还要学BASH,为什么还要学PERL......都统一用PHP开发不就行了?甚至连桌面软件都用PHP来写(GTK啊,我目前还有这个冲动,残念~~),这样我只需学会PHP就一精而百通了,‘一次学习,到处编写,多和谐的社会啊’......”

如果是这种情绪,建议放弃PHP,学习C,C可以达到以上境界,鉴定完毕。
作者: benjiam     时间: 2006-12-28 17:01

...lz 你忘记了 没有apache 你的php 怎么跑?

你还需要静态话apache.  

你的做法 用c 写cgi 不久可以了。 永得着用php 吗?  我自己写个web server 连apache 都省了。
作者: sniper     时间: 2006-12-28 17:55

monowall的系统脚本几乎全部是用php写的。
作者: HonestQiao     时间: 2006-12-28 18:34



QUOTE:原帖由 sniper 于 2006-12-28 17:55 发表
monowall的系统脚本几乎全部是用php写的。 还有有一个已经非常成熟的PHP做的WEB Server,与PHP天成。
作者: oklqh     时间: 2006-12-28 20:50

忍不住冒个泡

楼主肯定是内核版过来闹事的:)
作者: HonestQiao     时间: 2006-12-28 21:15



QUOTE:原帖由 oklqh 于 2006-12-28 20:50 发表
忍不住冒个泡

楼主肯定是内核版过来闹事的:) 别挑,该干啥干啥,写程序的写程序,要睡觉的洗了睡。
作者: npcomet     时间: 2006-12-28 21:21

想法很好
不过php承受能力是一个问题
稳定性不能保证
作者: whoto     时间: 2006-12-28 21:46

这个想法不错,在底层和用户之间建立一个可以做大部分事情的界面。
说起来曾经有人想做这件事,java,dot net 不就是如此目的吗?
作者: dualface     时间: 2006-12-29 00:59

编译出一个windows下面的php+mysql,并且能够提供web服务的exe,我就等着用现成了,哈哈。

楼主很有创意,不过要搞来实用化想想就是个大工程。如果要商业应用,道路就更坎坷了。
作者: cram     时间: 2006-12-29 01:41

我等!!
作者: mzli     时间: 2006-12-29 08:29



QUOTE:原帖由 zvxcv 于 2006-12-28 13:04 发表


最大的区别在于,“WebMin”是别人写的,当使用这一软件时,除了作者本人,使用者一般不了解也不需要了解其中的代码和执行过程。

我的这一构想使得每一个对操作系统有兴趣的人都可以跟据自己的需要和偏好来 ... 不得不说,你头脑发热吧,烧坏了没有?

无聊烧的
作者: goshawk     时间: 2006-12-29 09:50

路过
作者: liushengjiao     时间: 2006-12-29 09:58     标题: I 服了YOU

发烧的不轻!赶快去医院。
作者: james.liu     时间: 2006-12-29 10:46

汗。。这题目。。。
作者: lit40     时间: 2006-12-29 11:20

已经有一个成型的PHP写的web server: nanoweb
http://nanoweb.si.kz

PHP的CLI模式,确实是可以做很多用户交互的工作,ls,grep,awk...这些应该都可以用php来实现,当然用python实现也应该是可行的.

至于dns,samba,ftp,ssh...这些服务也应该能实现的,协议都是开放的,就看时间精力了.
作者: kingp999     时间: 2006-12-29 13:14

呵呵
学习一下
作者: root_wxt     时间: 2006-12-29 15:44

传说中的WEB OS?
作者: etng     时间: 2006-12-29 17:42

拯救地球的伟大任务就交给你啦!
作者: ttvast     时间: 2006-12-30 03:26



QUOTE:原帖由 crazysoul 于 2006-12-28 16:05 发表
很明显,楼主是被“多样化”语言给调戏了,很多刚学脚本的人都会经历的阶段。

“好不容易地,我学会了PHP,为什么还要学HTML?为什么还要学SQL,为什么还要学BASH,为什么还要学PERL......都统一用PHP开发不就 ... 我只学习语言,不学习类库更不学习框架。所以所有需要用类库才能开发的语言,我都学不好,所有基于框架的开发我一概都不会。
如果只学习语言,php到c到pascal或是其他各种东西,都很简单。但是一旦一个语言用上了框架,那么你的一切开发都被框架搞死了。就好像struts,就这样一个有设计缺陷的东西却让很多人作为开发java web的基石,真是程序开发者的悲哀。
作者: hongfengyue     时间: 2006-12-30 09:44

不错,等待LZ下文!
作者: minix     时间: 2006-12-30 17:33     标题: 支持

我不是太懂,看大家讨论得那么热烈,忍不住冒个泡。既然大部分人都认为LZ的想法非常OK,当然问题肯定存在,当然有问题可以解决嘛,我认为这样的想法应该鼓励,最起码也不能泼冷水啊
作者: bs     时间: 2006-12-30 17:36

这个就像 讨论开发PHP要不要用模板一样...
不用模板性能当然好些....


就像讨论高级语言和汇编一样.....




我觉得LZ的思想是倒退的

[ 本帖最后由 bs 于 2006-12-30 17:39 编辑 ]
作者: 新杂人     时间: 2006-12-30 21:08

呵呵! 一个多元化与单一性讨论, 能做到预计的事情就可以了, 前提条件是不影响性能
作者: zvxcv     时间: 2006-12-30 21:38     标题: 谢谢大家的鼓励!

我已经用PHP写好了一个简单的PHP WEB服务器,采用socket_select()单进程事件驱动多道服务技术,目前只有300多行代码,已经能够正确地通过FASTCGI来执行外部的PHP脚本,不过目前这一代码对HTTPPOST方法还没有调试成功,每一传递给FASTCGI服务器的POST请求都会导致服务器立即断开连接,不知是传入的参数不对,还是数据打包错误。懂得FASTCGI协议的人可以指点一下,对于POST过程,FASTCGI服务器需要接收哪些必备的参数,才能继续接收后续的POST数据。

如果这一问题解决了,就可以用300行左右的PHP代码+Linux内核+PHP+MySQL这三大可执行文件足足可以将任何一台裸机搞定成一个能够运行PHP论坛站点的WEB服务器,除此而外,其中不包含任何别的可执行文件,包括Apache服务器或其它HTTP服务器和其它可执行文件与动态链接库。

我的思想确实是“倒退”的,想“倒退”到二三十年前8位机BASIC时代,对那时的机器来说,BASIC语言就是操作系统。我最早接触的计算机就是运行BASIC语言的8位苹果机,那时的感觉是使用BASIC语言无所不能,进入DOS和Windows时代,接触的计算机语言多了起来,开发工具也多了,反而觉得自己在编程方面变得一无所能,每一个方面都只能懂得个皮毛。现在的操作系统太复杂了,不是你在控制操作系统,而是操作系统在控制你。

[ 本帖最后由 zvxcv 于 2006-12-30 22:21 编辑 ]
作者: zvxcv     时间: 2006-12-30 22:16



QUOTE:原帖由 crazysoul 于 2006-12-28 16:05 发表
很明显,楼主是被“多样化”语言给调戏了,很多刚学脚本的人都会经历的阶段。
如果是这种情绪,建议放弃PHP,学习C,C可以达到以上境界,鉴定完毕。 C语言的编绎需要庞大的编绎环境支持,需要大量的头文件,连接库。编绎过程需要项目管理(Make),需要预处理,需要汇编,需要连接,连接好了运行时还需要动态链接,每一步都会产生错误。而对于PHP这样的脚本语言,随时随地的require一下就可以加载运行源代码,你说方便不方便。
作者: dualface     时间: 2006-12-30 22:23

楼主的想法搞成专有系统还是不错的,但是不能因此排斥多样化。

事实上,这个世界本就复杂,不可能用一成不变的手段去解决任何问题。所以解决方案本身也变得多样化了。
作者: qiyu15555     时间: 2006-12-31 10:27

期待成功
作者: caualex     时间: 2006-12-31 13:09



QUOTE:原帖由 mailjzwu_1 于 2006-12-28 01:50 发表
这种情况适合专用系统,小型系统
特别好管理,但当你的系统足够大,如你的网站有几千万HTTP的访问量,有数百万个文件,有十亿行数据库,使用mysql就不适合了
运行效率还有待观察 不太同意你的观点,
十亿级别的表, 在任何数据库里边, 都不会快的,
肯定需要优化, 比如把这个表分成多个表,
加上合适的索引, 还有就是对表进行分区,
如果是事务性的表, 使用innodb引擎,

系统使用的数据库, 和后台查询分析用的数据库要分开。

这样都能提高速度
作者: Zandy     时间: 2007-1-2 19:28

如果实现了是好事情,不错,鼓励一下。标记。
作者: hightman     时间: 2007-1-2 20:11



QUOTE:原帖由 zvxcv 于 2006-12-30 21:38 发表
我已经用PHP写好了一个简单的PHP WEB服务器,采用socket_select()单进程事件驱动多道服务技术,目前只有300多行代码,已经能够正确地通过FASTCGI来执行外部的PHP脚本,不过目前这一代码对HTTP POST方法还没有调试 ... 用PHP来实现作daemon服务本身并不难, 我自己写写过搭配 socket_select 等系列函数来实现的一些 server 服务, 并发情况较小时没有感觉, 但如果你用效率测试工具一测, 那是数倍的"慢慢慢".

因为每一次在循环代码中跳转,都是执行php的语句,这里效率太差了.

而且现在 php 中对信号的处理还得通过 tick 来实现, 感觉挺不好的
作者: java47     时间: 2007-1-4 09:31

楼主牛   
作者: atyu30     时间: 2007-1-5 15:52

顶!!!!




http://bbs.chinaunix.net/