小编rah*_*286的帖子

Apache的mod_php还是FastCGI?哪个对Wordpress有好处?

我有关于在不同的配置中运行PHP的基本想法,如mod_php,cgi,FastCGI等.

在我的发现和测试中,我发现FastCGI略胜一筹.我最喜欢FastCGI对SuEXEC的支持.等等我不想再次进入基准测试业务.如果你上网,你会发现在每秒处理的请求数量方面,证明一种方式比另一种更快的人.那么它的好指标,但我对不同的因素感兴趣,这是我的问题......

  1. 运行PHP的哪种方法占用的内存较少?
  2. 另外哪种方法消耗内存几乎不变.我用mod_php看到我的服务器内存使用率每隔几秒就会在300MB到800MB之间波动.
  3. 但是使用FastCGI,来自服务器的第一个响应来得非常晚.我看到FastCGI每个网页请求有一个初始延迟.一旦服务器的第一个响应到达,其他项目,如图像,css,js加载速度相当快.
  4. 两种混合运行都可以吗?我在专用服务器上有5个站点.如果我使用mod_php运行少量并使用FastCGI休​​息,这样可以吗?
  5. 我确信我的服务器出现故障主要是因为mod_php的内存使用不当.我检查了所有脚本.有没有办法确保服务器上的内存消耗几乎保持不变?
  6. .htaccess的复杂性是否会显着影响内存使用?如果是,是否可以使服务器内存不足?
  7. apache MPM prefork/worker设置会影响内存消耗吗?它们是否同样影响mod_php和FastCGI模式?
  8. 当我运行"top"命令时,我看到apache(httpd)消耗大约40MB的内存.有许多httpd运行的实例.此外,FastCGI还会分配一些类似大小的进程.httpd进程的正常内存大小是多少?
  9. 当我在我们所有的网站上运行Wordpress时,在这种情况下这将是一个好方法吗?
  10. FastCGI/SuExec与APC一起工作正常吗?我是否需要重新配置APC才能与SuEXEC和FastCGI配合使用.

请注意,我对DIGG或交通高峰的生存兴趣不大.我想要一种可以使服务器稳定和可预测的方法.

对不起,如果我很困惑,但我真的很乱.我有512MB物理内存,400MB交换和我的服务器疯狂的内存不足.平均内存需求大约为350MB,只是内存使用量激增使得内存几秒钟无法访问,如果在那几秒钟窗口中收到的额外点击很少,则apache在mysql和所有其他fellas运行正常时崩溃.

请帮帮我们.我不会买更多的RAM或硬件.我很确定问题出在我的配置中.对不起,如果我听起来傲慢或无知.

php apache wordpress fastcgi mod-php

18
推荐指数
1
解决办法
2万
查看次数

如何在PHP中检测X-Accel-Redirect(Nginx)/ X-Sendfile(Apache)支持?

关于申请

我正在使用PHP开发电子商务应用程序.为了保证URL的安全,产品下载链接保留在PHP之后.有一个文件,比如download.php,它通过GET接受几个参数并根据数据库验证它们.如果一切顺利,它使用PHP中的readfile()函数提供文件.

关于问题

现在问题来自传递给readfile()的文件大于php.ini中设置的内存限制因为这个应用程序将被许多用户用于共享托管,我们无法继续改变php.ini设置.

在我们寻找变通方法的努力中,我首先想到我们可以在while循环中进行fread()调用,但似乎会出现问题以及突出显示在PHP中可靠地下载大文件

所以我最好的选择是检测/检查服务器是否支持X-Accel-Redirect(如果是Nginx)/ X-Sendfile(如果是Apache)

如果服务器支持X-Accel-Redirect/X-Sendfile,我可以使用它们,在else块中我可以让系统管理员知道php.ini强制执行的内存限制

理想情况下,我希望尽可能使用像X-Accel-Redirect/X-Sendfile这样的服务器端支持,如果这不起作用 - 我希望有一个回退代码来读取没有readfile()的文件.

我还不确定while循环中的readfile()和fread()是如何不同的,但似乎while循环会产生问题,再次,如在PHP中可靠地下载大文件中所建议的那样

希望得到一些帮助,建议,代码,指导.

谢谢阅读.

php memory apache nginx large-files

12
推荐指数
2
解决办法
9993
查看次数

“ git push --mirror”删除了远程标签。有什么办法恢复它们?

在跳出来回答之前,请仔细阅读以下内容!

问题:

  1. 我正在研究一个项目(使用git进行版本控制)。
  2. 我创建标签版本2.x和它推到我的远程起源
  3. 该远程源是一个私有镜像,在1.x系列中没有标签。原因 -我们在v2.x中从头开始编码,因此维护1.x仅出于历史原因。
  4. 对此一无所知,我向我们的公共github存储库添加了另一个遥控器。
  5. 我以为可以镜像最新的标签并提交到github(因为我是唯一的开发人员-我没有费心去合并!)

我用了:

git push --mirror
Run Code Online (Sandbox Code Playgroud)

并从Github删除了1.x系列中的所有标签!

现在的情况:

这意味着数据存在于远程...

可能有效的方法:

  1. 如果我可以使用所有日志(包括有关本地已删除的“提交”的日志)克隆Github存储库,那么我的“本地”也将删除已提交。之后,可能是git reflog / rebase / reset练习。

  2. 我假设因为远程git本身就是一个完整的仓库,并且通过SHA1哈希显示提交,所以如果我可以在“远程”上运行git reflog / rebase / reset,那么理论上就可以了。

请注意,我正在寻找纯git方式。我们可以手动下载“标签”(zip),从SVN还原(我们在1.x期间使用SVN)

请让我知道您的建议/解决方法。

git push restore mirror

5
推荐指数
1
解决办法
1723
查看次数

标签 统计

apache ×2

php ×2

fastcgi ×1

git ×1

large-files ×1

memory ×1

mirror ×1

mod-php ×1

nginx ×1

push ×1

restore ×1

wordpress ×1