PHP与长时间运行的进程(Python、Java等)相比如何?

5
我希望了解您对使用PHP编写Web应用程序与使用Django或Turbogears等Python工具运行长时间进程的看法。
据我所知: - 在PHP中,每次都是从硬盘获取页面(尽管我认为操作系统在访问后会将文件保存在RAM中一段时间) - 每次都会重新编译页面为opcode(尽管来自Zend等的工具可以在RAM中保留已编译的版本) - 每次获取页面意味着每次读取全局和会话数据,并重新打开与数据库的连接
因此,我想PHP在共享服务器上(多个站点共享同一主机)运行中度使用的应用程序时是有意义的,而长时间运行的进程则提供了更高性能的应用程序,在专用服务器上运行并承受重负。
感谢任何反馈。
5个回答

3
在您应用了memcache、opcode缓存和连接池之后,PHP与其他选项的唯一真正区别在于PHP是短暂的基于进程的,而其他选项通常是长期的基于多线程的。
PHP的优点在于编写脚本非常简单。您不必担心内存管理(它总是在请求结束时释放),也不必太担心并发性。
我能看到的主要劣势是有些更高级(有时更疯狂?)的东西比较难:预计算结果、预热缓存、重复使用现有数据、请求优先级和异步编程。我相信人们还可以想到更多。
不过,大多数时候,这些劣势并不是什么大问题。您可以通过添加更多机器和使用更多缓存来扩展。普通的Web开发人员不需要担心并发控制或内存管理,因此从中删除它们所带来的微小影响并不是什么大问题。

2
  • 使用APC,将很快默认包含在PHP中,编译的字节码会保存在RAM中。
  • 使用mod_php是最流行的使用PHP的方式,PHP解释器留在Web服务器的内存中。
  • 使用APC数据存储memcache,您可以在RAM中拥有持久对象,而不是例如从数据库获取数据并始终重新创建它们。

在实际部署中,您将使用以上所有内容。


最佳解决方案是同时使用这两种方法,或者用FastCGI设置替换mod_php。 - Powerlord
当然,我绝不会建议这些是替代方案。 - vartec
在正确配置的 Web 服务器上,I/O 将被缓存,因此即使没有 APC/mod_php,您也不太可能访问磁盘。我建议使用 mod_php 而不是 fast CGI 或 CGI (@Powerlord: mod_PHP 比 FastCGI 运行更快)。虽然您可以使用更快的存储介质,如 memcached,但没有办法避免重新读取会话。 - symcbean

1

在我看来,PHP 在任何一种用途上都表现良好,性能开销很少被注意到。通常会延迟程序的是其他进程。使用像 eAccelerator 这样的工具轻松缓存 PHP 程序。


0
正如其他人所指出的那样,PHP和Django都不会成为您的瓶颈。对于高流量网站,从硬盘获取PHP字节码是无关紧要的,因为此时缓存将接管。Django也是如此。
模型/视图和用户体验设计将比语言本身带来数量级的性能优势。

-1

PHP是一种像Java等语言的编程语言。 唯一可执行的是php二进制文件,而不是JVM!如果您的共享托管提供商允许,您可以为PHP脚本设置另一个最大运行时间,而不会遇到任何问题。

您的应用程序运行的位置不应取决于服务器的类型,而应取决于应用程序使用的资源(CPU时间,RAM)以及您的服务器/虚拟服务器/共享主机提供的资源!

出于性能调整原因,您应该查看eAccelerator等内容。Apache还支持连接池模块!请参见mod_dbd。如果您需要进行扩展(例如在集群中),则可以使用分布式内存缓存系统,例如memcached


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接