Articles of PHP

Segfault PHP-FPM,Nginx,Freebsd

我们正在经历高负荷的CPU短缺。 它只发生在网上用户在1300-1400左右(根据谷歌分析)。 我们在浏览器中收到空响应。 短缺意外地发生在我看来很奇怪。 我的意思是 – 有50%以上的空闲CPU,突然下降到0%几秒钟,然后跳回来。 这是当时的“iostat 1”输出。 看最后一栏。 70%是最新的正常行为。 http://pastebin.com/sMjQ0AaJ 队列中的所有PHP-FPM进程正在死亡,将这些日志留在/ var / log / messages中 Feb 25 20:20:01 <kern.info> dasaran kernel: pid 36267 (php-fpm), uid 80: exited on signal 11 Feb 25 20:20:01 <kern.info> dasaran kernel: pid 36265 (php-fpm), uid 80: exited on signal 11 Feb 25 20:20:01 <kern.info> dasaran kernel: pid […]

PHP + Apache很长的等待时间

我遇到了一个砖墙故障排除我的专用websever。 最近,我的网站飙升的请求数量/每秒,它坠毁。 盒子原有8GB内存,8核心Xeon E3-1230,1TB 7,200 RPM磁盘(无RAID),100M专用networking。 在秒杀之后,我增加了RAM到24GB以支持更多的并发用户。 Apache似乎处理得很好,即使有3000个并发用户,它也会很快(非caching)返回HTML和静态内容。 为了进一步testingApache / HTML和Apache / PHP之间的差异,我运行了ab 。 test.html和test.php都具有完全相同的静态内容,PHP不会调用任何include ,也不会与MySQL连接。 HTMLtesting ab -n 500 -c 50 http://www.~~.com/test.html Connection Times (ms) min mean[+/-sd] median max Connect: 252 375 190.3 276 1399 Processing: 254 354 121.5 282 657 Waiting: 253 353 121.4 280 653 Total: 510 730 231.7 573 1675 PHPtesting […]

会话variables在PHP5 / Apache2 / Ubuntu12中不是持久的

我有一个网站,使用会话variables(在PHP中)来了解访问者是否进入网站。 如果他是新的,那么我将他redirect到检测到的语言。 但是,如果他不是新的,就让他去任何他想去的地方(甚至是其他语言的网页)。 问题是用于实现这个($ _SESSION [“knownvisitor”])的variables不是持久的。 我已经在其他服务器上testing了同一个网站,它工作的很好,所以我很确定这是一个会话configuration问题。 有问题的服务器是Ubuntu服务器12.04.4与Apache 2.2.22和PHP 5.3.10。 会话存储在“/ var / lib / php5”,我可以看到那里的文件,但它们是空的。 会话文件属于“www-data”,拥有以下权限“-rw ——-”。 另一方面,该目录属于“根”并具有这些权限“drwx-wx-wt”。 在redirect之前,我尝试使用“session_write_close()”,正如一些论坛中的build议,没有运气。 redirect就像“header('Location:[URL]')”。 这里是脚本的代码,所以你可以理解它的基本行为。 这就是我在网上所有文件的开头: function detectedlang($availlangs) { // FUNCTION STUFF HERE TO FIND OUT WHICH IS THE LANGUAGE OF THE VISITOR return $detectedlang; } session_start(); if (!isset($_SESSION["knownvisitor"])) { $detectedlang = detectedlang(array("en", "es")); $_SESSION["knownvisitor"] = true; header("Location: […]

服务器增量备份到AWS Glacier

我正在寻找从Linux服务器备份各种目录和文件到AWS Glacier。 我正在努力解决如何做到这一点的细节。 增量备份 我想逐步上传文件。 所以基本上,如果一个文件没有改变,我不想再次上传到冰川,如果它已经存在那里。 我想我有这个部分解决。 由于您无法即时获取冰川保pipe库中的存档列表,因此我将保留上传文件的本地数据库,以便能够分辨存储库中存在的内容以及不存在的内容。 这将允许我做增量备份(只上传丢失或更改的文件)。 不能覆盖文件? 根据( http://aws.amazon.com/glacier/faqs/ ): 存储在Amazon Glacier中的档案是不可变的,即档案可以被上传和删除,但不能被编辑或覆盖。 那么,如果我上传一个文件/档案文件,然后在本地更改文件,下一次我做备份时,会发生什么情况,因为它不能用新版本覆盖文件,Glacier如何处理? 删除旧数据 AWS每GB收取0.03美元,用于删除不到3个月的存档。 由于我正在做一个本地服务器的备份,我想删除本地不存在的归档文件。 什么是组织这个最好的方法。 使用本地存储的存档清单来确定哪些数据不再存在,如果大于3个月,请将其从Glacier中删除? 这似乎很简单,但有没有更好的方法呢? 单个文件与TAR / ZIP文件 您可以上传单个文件作为存档,或者通过在上传之前将文件分组为TAR或ZIP文件来提高效率。 TAR / ZIP文件的想法是有吸引力的,因为它使得它更简单,你会收取较less的存储费,但我想知道我将如何处理增量上传。 如果上传了一个包含10,000个文件的20 MB压缩文件,并且其中一个文件在本地进行了更改,那么是否需要上传另一个20 MB的压缩文件? 现在,我需要吃掉在这些zip文件中存储几乎所有东西的两个副本的成本…另外,我将如何处理删除不在本地存在的ZIP文件中的东西? 由于我不想删除整个zip文件,现在我要花费存储不再存在的文件。 也许我正在反思这一切。 什么是最直接的方法来处理这些问题? 我不知道是否重要,但是我正在使用PHP SDK作为这个备份脚本。 另外,我不想先上传到S3存储桶,然后将存储桶备份到Glacier,因为我现在必须支付S3存储和传输费用。

mod_fcgid:软件升级后无法应用进程槽

我正在与Wiki和公告板安装共享托pipe计划。 将Wiki升级到最新版本后,我的用户无法再使用集成的“媒体pipe理器”上传文件。 服务器日志显示: mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper, referer: http://www.myurl.com/path/to/wiki/ 我联系了托pipe公司和支持者回答说,他愚弄 FcgidMaxProcessesPerClass FcgidMaxProcesses 无济于事。 他也改变了一些suexec权利,没有成功。 未安装mod_security 。 整个主机的HTTPfile upload被破坏,公告板上的用户也无法上传文件(尝试上传文件时503服务暂时不可用)。 其他一切工作正常。 页面加载速度是好的,用户可以编辑,创build和删除网站等。每个FTP上传文件也在工作。 在这个网站上有<30个活跃的用户,所以我不认为我没有stream程或东西。 我无法直接更改apache设置。 任何想法,我可以告诉支持,看看? 编辑:公告板有一个喊话器,它增加了一些负载的网站。 我清除了所有的信息,减less了留言的数量。 我也停用了所有的wiki插件。 仍然没有成功。

Nginx和PHP的子目录

我在nginx后面有一个应用程序。 但我需要在这个应用程序redirect到一个WordPress博客的具体path 例如: example.com/ ——->redirect到我的应用程序 example.com/whatever/ ——->也redirect到我的应用程序 example.com/blog/ ——->redirect到我的WordPress的博客 所以,我添加了一个匹配这个子path的位置 server { listen 80 default_server; index index.php; server_name _; location ^~ /blog { root /path/to/my/blog; index index.php index.html; location ^~ /blog/(.*\.php)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /path/to/my/blog/$fastcgi_script_name; include fastcgi_params; } } location ~* /(.*) { #here the conf for the rest of the […]

将PHP升级到CentOS 4.5上的最新版本

我是一个Linux新手,但我需要将CentOS 4.5上的PHP升级到最新版本 – 至less是5.2.2或更高版本。 什么是最简单的方法来做到这一点? 通过yum的最新版本似乎是5.1.6,我无法在网上find任何可以工作的东西。

PHP / IIS6使用哪个用户读取/写入文件?

我已经在IIS6上安装了PHP5(FastCGI),只是想知道哪些用户PHP用来访问文件系统的窗口? 以ASP.NET为例,ASPNET帐户用于访问文件系统。 但是PHP怎么样? 我读过一些build议使用匿名(即IUSR)帐户的post 。 但是,如果我给予IUSR账户的写入权限,这不是一个安全漏洞吗? 谢谢!

如何通过PHP和/或Apache保护大文件下载?

我们有一些不能公开访问的大文件(1-8GB)。 目前我们正在通过一个PHP脚本来提供它们,caching1MB块的文件并将其写入输出。 这是令人难以置信的CPU密集型,并在只有几个下载活动时减慢服务器。 我们希望将文件传输工作转移到Apache或更高效的方法。 我们正在使用cookieauthentication。 除非有一些方法通过现有的PHP会话cookie来validationFTP会话,否则FTP下载已经结束。 理想情况下,我们希望能够使用PHP隐藏文件链接,同时将文件传输工作传递给Apache,这对于HTTP文件传输无疑比PHP更高效。 我们希望能够恢复下载。 任何帮助表示赞赏。

比较Nginx + PHP-FPM和Apache-mod_php

我正在运行Drupal并试图找出最好的堆栈来服务它。 Apache + mod_php或Nginx + PHP-FPM 我使用了ApacheBench(ab)和Siege来testing这两个设置,而且我看到Apache性能更好。 这让我感到惊讶,因为我已经听说了很多关于Nginx + PHP-FPM的好消息。 我目前的Nginx设置是有些开箱即用的,PHP-FPM也是如此 我可以通过Apache和mo_php加快Nginx + PHP-FPM组合的优化吗? 在使用ab的testing中,Apache性能明显优于Nginx(更高的请求数/秒和完成testing更快) 我search了一下,但由于我从来没有使用Nginx,PHP-FPM或FastCGI,我不知道从哪里开始 PHP v5.2.13,Drupal v6,最新的PHP-FPM和Nginx源码编译。 Apache v2.0.63 ApacheBench Nginx + PHP-FPM Server Software: nginx/0.7.67 Server Hostname: test2.com Server Port: 80 Concurrency Level: 25 —> Time taken for tests: 158.510008 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 —> Requests […]