我无法理解apache / php / mysql堆栈在低级别上的工作原理(包括与浏览器的交互)。是否有一个很好的描述(一本书,一个网站等)将引导我完成整个路径并解释如何从浏览器开始请求URL,http请求被发送,apache如何与php交谈,php如何与mysql(持久和非持久连接)等等。我想了解等待这个链中的什么,处理超时的时间,打开和关闭套接字的时间。一本书,一篇文章可能吗?每个组件都有很多文档,但我找不到“演练”。
到目前为止我的解释是非常高级的:看,这是一头快乐的牛,它去了牛大学,看起来 - 这一切都收缩在超市货架上。我需要的是香肠农场/屠宰场/卡车/工厂之旅,从奶牛不育开始:)
[更新]直到今天,除了阅读消息来源之外,我还没有找到更好的方法来了解这些事情。
答案 0 :(得分:6)
PHP and MySQL by example有一个非常基本的过程图片,我想你可能已经理解了。
比这张图片更深入,但这是一个相当长的讨论。具有讽刺意味的是,您可以阅读我刚刚链接的书,以获得非常好的描述。如果您有更具体的问题,我建议为他们提出新的问题。享受!
答案 1 :(得分:3)
我找到了一个网站,其中至少部分内容来自George Schlossnagle的 Advanced PHP Programming 一书。
该网站位于:http://php.find-info.ru/php/016/toc.html。具体来说,The PHP Request Life Cycle部分包含了许多细节,包括一些源代码和图表。
免责声明: IANAL,但考虑到该图书仍然是listed on Amazon,上面链接的内容可能会破坏各种代码,规则和/或法律。我不打算扩散或纵容非法或盗版材料,所以如果是这样,请删除所说的链接。
答案 2 :(得分:1)
答案 3 :(得分:1)
最好的做法是获得一本关于LAMP堆栈的好书。
快速回复(如果您觉得需要,请询问更多) 浏览器通过HTTP协议联系Web服务器 服务器生成(让我们暂时离开)html结果并将其发回。 每个浏览器只能理解http协议(为了这个分析)。
现在只需从apache服务器读取图标,图像,javascript等项目并“复制”到浏览器。在普通的html文件中也是如此。 区别在于php文件(我在这里过于简化)。这些传递给php模块,响应(模块)将被发送回浏览器。
php模块是理解php的东西。 我们在一起吗?如果是的话: PHP脚本可能(或可能不)需要来自MySQL服务器的数据,它必须连接它们或操纵它们等。
总结:这些操作中的每一个都是在不同的流程级别中单独完成的。这就是它“简单”的原因。 如果您想要更具体的内容,请询问更多信息。
答案 4 :(得分:0)
据我所知,apache会收到请求,并根据你的.htaccess或配置选项找出解决方法。然后,如果需要,它会将此请求传递给PHP进行解析。 PHP对代码进行了两次扫描,第一次是预解析,在解析页面之前,它会在顶级(在if语句,循环,包含,evals或基于lamda的函数中忽略任何内容)中捕获明显的缺陷并运行函数真的。我相信,使用echo完成的任何操作都将作为标准输出流返回,并返回到apache。如果apache超过页面,它会将kill信号发送给PHP,它关闭对象,在退出之前打印错误消息(如果需要)。一旦页面退出apache趋向于标题并返回页面。
我希望更多地了解这一点,所以如果有人能够更好地解释它或对我的答案进行纠正/扩展,我很乐意听到。