我已经使用Curl和PHP设置了一个内部代理。设置如下:
代理服务器是相当便宜的VPS (有时具有较慢的磁盘i/o )。对此服务器的所有请求都由单个index.php脚本处理。index.php从另一台快速服务器获取数据并显示给用户。
两个服务器之间的数据传输非常快,瓶颈只是代理服务器上的磁盘i/o。因为只有一个index.php -我想知道
1)如何确保index.php在代理服务器上的Apache中被永久“调用”?(搜索php缓存,我发现了许多自定义的解决方案,它们将缓存php的"data“输出。我想知道apache中是否有任何预构建模块可以缓存php-script本身?)。
2)从后端服务器获取的数据是否总是在代理服务器的RAM/缓存中?(假设有足够的内存)
3) apache在处理请求时是否从磁盘读取任何配置文件或其他文件?
4) apache是否等待日志写入磁盘,然后再提供内容-如果是,我将禁用代理服务器上的日志记录(或者是否有方法确保内容首先提供,而不等待日志写入)。
基本上,我希望在“代理”服务器上一起消除磁盘i/o。
谢谢,
JP
发布于 2010-11-15 15:43:36
1)安装APC (http://pecl.php.net/apc),这将编译你的PHP脚本一次,并在PHP服务器进程(或给定的TTL)的生命周期内将其保存在共享内存中。
2)如果您的脚本获取数据,并且没有在文件系统上缓存/存储数据,那么它将在RAM中,是的。但仅在请求的持续时间内。PHP使用“无共享”策略,这意味着-所有-内存在请求后释放。如果您确实在文件系统上缓存数据,请考虑使用memcached (http://memcached.org/)来绕过文件i/o。
3)如果你激活了.htaccess支持,Apache会在每条路径中搜索到你的php文件。有关详细信息,请参阅Why can't I disable .htaccess in Apache?。
4)不是100%确定,但它可能会等待。
发布于 2010-11-15 15:45:43
为什么不使用像Varnish这样的东西,它是专门为这种类型的任务构建的,并且没有Apache的开销?
发布于 2010-11-15 16:10:05
我推荐用"tinyproxy“来表达这篇短文。能非常有效地完成你想要的一切。
https://stackoverflow.com/questions/4181865
复制相似问题