gpt4 book ai didi

php - 扩展 PHP 应用程序

转载 作者:行者123 更新时间:2023-11-29 04:45:07 25 4
gpt4 key购买 nike

我有一个现有的 php 网站,它是用老式的方式编写的。

每一页都有相同的图案

<?php
require_once("config.php");
//Some code
require_once("header.php");
?>
Some HTML and PHP code mixture
<?php
require_once("footer.php");
?>

所有数据库连接、 session 数据、语言文件都在“config.php”文件中启动。并且每个数据库访问都是通过 mysql_query 调用完成的,

完全没有 OOP,纯粹的过程编程。

您将如何优化此代码结构以提高性能并使该网站足够健壮以处理高流量?

最佳答案

How would you to optimize this code structure in order to improve performance and make this website robust enough to handle heavy traffic ?

您向我们展示的结构几乎没有优化空间。使其面向对象会使它比现在慢。请注意,所包含文件中的代码可能会因各种更改而受益匪浅。

这里只有 3 行代码。所以调整的余地不大。 _once 构造增加了(微小的)开销,使用 require 而不是 include 也是如此 - 但与您未向我们展示的代码中可能发生的情况相比,这是非常小的数量。

Where all the db connection, session data, language files are initiated at the "config.php" file

通过延迟对外部资源的访问直到需要它们(并在不再需要时立即放弃访问),再次实现了边际节省 - 但这不是 OO 与程序问题。

为什么面向对象会变慢?

这里的请求路由是通过网络服务器实现的——网络服务器非常擅长于此,而且通常非常非常高效。使用前端 Controller 的替代方法为以更易于管理的方式应用模板和应用内容的后期修补提供了一定的范围(尽管这是否是个好主意还有待商榷)。但是使用前端 Controller 模式并不是面向对象的要求。

潜在地,当编写为 OO 代码时,冗余内存分配会持续更长时间 - 因此运行时往往会占用更大的内存。

重写和装饰为数据转换的调用增加了额外的抽象和处理开销。

every DB access is done with a mysql_query call

到目前为止,有几个部分。是的,不推荐使用 mysql_ 扩展,您应该优先考虑迁移它(抱歉,但我不能推荐任何好的前向/后向垫片)但是它比 mysqlnd 引擎快得多 - 后者具有确定的性能由于减少了内存负载,因此具有大型数据集/大容量的优势。

您似乎确信过程式编程在性能和规模方面存在一些固有的错误。没有东西会离事实很远。 G-Wan、Apache httpd、Varnish、ATS、Linux 内核都是用 C 编写的,而不是 C++。

如果您想提高性能和可扩展性,那么您目前找错地方了。取得重大进展的唯一方法是在相关负载级别下分析您的代码。

关于php - 扩展 PHP 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20310650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com