Articles of PHP

Apache:使用Googlebot连接,一个进程占用所有服务器内存

以下https://serverfault.com/questions/418735/unbelievable-issue-a-single-apache-process-takes-4-gb-of-memory我作为一个新的问题发布,因为我能够确定它的事实当连接的客户端是Googlebot时发生。 通过“它”,我的意思是一个单一的Apache进程吃5千兆内存?! 有没有人有一个什么可能是这个原因的想法? 非常感谢您的帮助! 我发现了另一个问题完全相同的问题,但没有答案: https : //serverfault.com/questions/161478/apache-process-consuming-all-memory-on-the-server 我们的环境使用PHP和postgresql: # httpd -V Server version: Apache/2.2.3 Server built: Jun 6 2012 10:00:42 Server's Module Magic Number: 20051115:3 Server loaded: APR 1.2.7, APR-Util 1.2.7 Compiled using: APR 1.2.7, APR-Util 1.2.7 Architecture: 64-bit Server MPM: Prefork threaded: no forked: yes (variable process count) Server compiled with…. -D APACHE_MPM_DIR="server/mpm/prefork" […]

MySQL:5000核心用户,2GB表重写/读:如何防止崩溃

这是一个有争议的问题,因为很多人可能都想马上推荐一些简单的东西,比如:把桌子分开! 将读/写分解为主/从configuration! 放大服务器RAM! 等等….让我先解释一下这个问题: 我有一个有点强大的服务器:8GHz的,160GB的存储空间,8GB的RAM(16GB的灵活内存),RAID 10,16GB的Flexi-SSD。 运行mySQL,PHP,Apache,Debian。 我目前的数据库包含大约16个表,其中特别包含1.7GB的信息,2300万行(索引)。 我运行的服务需要每天进行,有时每小时扫描一次我通过第三方收到的数据,并且每分钟产生大约100行到最多5000行(很less)的数据。 数据是通过抓取工具从API中获取的,这些抓取工具是自动运行的,计划的,有时是临时的,所以它们对于主机来说是重要的。 当人们使用这个网站的时候,会有刷新的查询可以显示他们最新的分析数据,所以当很多人login时,这个数据非常繁重(我使用慢速查询并试图减less索引我可以在哪里)。 我从数据库中快速生成这些分析数据(最长24小时),可以为每个用户总结多达500万条logging。 我不认为预渲染这些查询是有意义的,因为我必须考虑所有的切片/过滤,以及在预先呈现的HTML文件….不是吗? 或者人们这样做? 现在,有时候,我在手机上收到警告,只有login到服务器才能发现mySQL已closures。 我会做一个mysqlcheck和修复,这需要2个小时或更长的时间,最终退出一个工作的数据库。 我开始一切,一切都很开心。 我从来不知道为什么会发生这种情况 ,大多数情况下,当一个博客写关于该网站的时候就会发生这种情况 ,而人们只是通过注册来攻击网站。 但是没有详细logging坠毁的地方。 除了速率限制注册过程(等待线),有什么我可以做,以确保无论发生什么事情,MYSQL不应该崩溃? 我可以每小时运行一次自动修复并优化实时实例吗? 我认为这阻止了所有访问表,这将是可怕的? 我真的被这个压倒了。 我分裂了读/写,理论上可以将所有的读访问用户拆分成EC2实例上的从属服务器。 但是,然后我有使用尖峰急剧上升的问题,一旦我需要一个新的EC2实例,它需要我传输高达2GB的数据同步从属数据库…这从来没有通过mysql-bin日志如果我决定closures/启动一个EC2实例并停留多天。 我已经能够保持良好的状态,但是即使有了EC2和其他技术,我也不会受到我的理解和技术能力的限制。 我很乐意分享所有必要的信息,以便将来成为有用的线索/文档。 由于不是每个网站都是youtube / youporn / instagram / tumblrtypes的环境,我觉得我的网站types信息太less(高写入/读取,每个用户500到5Mlogging,在3000-10000个用户。 谢谢大家,请提出问题,我会提供更多信息。 我很乐意听到你的最佳做法。

Cron作业一次发送大量电子邮件

我已经开发了一个PHP脚本,我想发送自动邮件给用户。 我用一个PHP脚本成功地实现了一个cron作业,该脚本检出一个PHP邮件队列表,用于挂起邮件。 脚本工作正常,但cron工作奇怪:它发送邮件给用户,但一次3或4。 我只想发一次邮件。 我怎样才能做到这一点? 我使用一个条件来检查邮件是否被发送,如果它是0,那么它将发送邮件并将值更新为1.这种情况工作正常。 此外,相对数据库仅显示每个用户一个条目,因此逻辑上只有一个电子邮件应该发送给用户,而cron作业一次发送3或4个相同的电子邮件给用户。 我每2分钟设置一次cron作业。 命令如下: 2 * * * * wget (Http PATH to SERVER)/Utils/MailQueue.php

用于PHP脚本的Utf-8编码会创build“已经发送的头文件”

如果我上传以UTF-8而不是ANSI编码的php文件,会在服务器上创build“已发送的头文件”的问题。 vi在开始时显示{feff},nano在开始时不显示\。 当我在vi中手动删除{feff}时,它工作正常。 但每次新的FTP上传后,都会再次添加。 这也发生在.html和.ctp文件中,但到目前为止从来没有出现过问题。

显示urlencoded字符的apache错误文件错误

如果我请求一个类似http://url/T%C3%A4st (http://url/Täst)页面,我的Apache-Error页面会显示错误的编码,例如: 在此服务器上找不到请求的URL /Täst。 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL /Täst was not found on this server.</p> <hr> <address>Apache/2.2.16 (Debian) Server at example.com Port 80</address> </body></html> 这怎么解决?

在Centos 6.3上启用DOM / XML

在经过我们团队的一些研究和试验和错误之后,我们无法使phpinfo中的'–disable-dom'消失。 我试图重新安装php-xml,但我得到以下消息: Package php-xml-5.3.3-14.el6_3.x86_64 already installed and latest version Nothing to do 服务器运行于CentOS 6.3版(最终版) 以下是phpinfo的“dom”部分下的信息: DOM/XML enabled DOM/XML API Version 20031129 libxml Version 2.7.6 HTML Support enabled XPath Support enabled XPointer Support enabled Schema Support enabled RelaxNG Support enabled 还有什么我们应该尝试,以便从phpconfiguration中删除–disable-dom? 谢谢。 [编辑] 有一个简单的方法来重新编译在CentOS6的PHP?

fopen:未能打开stream:755目录上的权限被拒绝

我收到错误 fopen(/var/www/photos/testphoto.jpg): failed to open stream: Permission denied 当PHP试图写一个文件到/var/www/photos ,其目录权限是 drwxrwsr-x 3 root www-pub 4096 Oct 11 01:46 photos 我已经添加apache2用户www-data到组www-pub ,为什么它仍然无法将文件写入目录,除非我chmod 777 /var/www/photos ? 更新 正如Laurentiu Roescu所build议的,我做了一个chmod 777 photos ,让PHP写这个文件。 这是ls -la的输出 -rw-r–r– 1 www-data www-pub 34777 Oct 11 02:12 testphoto.jpg

显示3个请求的单个页面(也打印标题)

在我的工作室有人在几年前devise了一个网页,现在客户决定更换服务器(他转移到运行Gen2 SMP的Linux Apache服务器,64位,PHP版本5.3.8,标准MYSQL版本5)。 它突然开始做奇怪的事情。 点击需要login的链接时,页面会使用PHP中的header()函数将您redirect到login页面。 奇怪的是,页面显示这个: 好 服务器遇到内部错误或configuration错误,无法完成您的请求。 请联系服务器pipe理员,[没有给出的地址],并通知他们错误发生的时间,以及你可能已经做了什么可能导致错误。 有关此错误的更多信息可能在服务器错误日志中可用。 HTTP / 1.1 200 OKdate:2012年10月15日星期一17:27:32 GMT服务器:Apache / 2.2.22(Unix)FrontPage / 5.0.2.2635 X-Powered-by:PHP / 5.3.8 Expires:Thu,11月19日1981 08:52:00 GMT Cache-Control:no-store,no-cache,must-revalidate,post-check = 0,pre-check = 0 Pragma:no-cache Keep-Alive:timeout = 5,max = 399连接:保持活动传输编码:分块的内容types:文本/ HTML 232C 然后,页面本身,然后,另一个标题: 0 1f4 好 服务器遇到内部错误或configuration错误,无法完成您的请求。 请联系服务器pipe理员,[没有给出的地址],并通知他们错误发生的时间,以及你可能已经做了什么可能导致错误。 有关此错误的更多信息可能在服务器错误日志中可用。 0 最有趣的是,如果你刷新页面或按下inputURL,它会正确加载。 我一直在检查日志,它只归咎于一个不起眼的图标。 我也检查了.htaccess,一切都是正确的(RewriteBase是/按照意图,唯一的东西有另一个移动^ en /请求的规则?lang = en。有没有人遇到类似的东西? 编辑 […]

php5.4 + freebsd8.3 + nginx无法获取错误

我有一个混乱的行为。 我不能得到任何错误到日志文件或屏幕。 我用这样的内容创build了一个文件index.php:“<?php a();”。通常,我会得到这样的消息:“调用未定义的函数a()”,但是当我在configuration上调用这个脚本时一无所有 只有白色的屏幕和空的日志。 我检查了所有的权利。 我打开了所有可能的日志文件。 没有。 请帮帮我。 我的configuration是: freebsd 8.3-RELEASE PHP 5.4.7(fpm-fcgi) nginx版本:nginx / 1.2.4 FPM-configuration [global] pid = run/php-fpm.pid error_log = log/php-fpm.log log_level = notice emergency_restart_threshold = 5 emergency_restart_interval = 2 process_control_timeout = 2 daemonize = yes events.mechanism = kqueue [puser] listen = /usr/local/www/host/tmp/php-fpm.sock; listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = […]

Postfix不会通过别名文件传输到PHP文件

我试图从后缀pipe道命令。 根据Postfix的日志,它的工作,但是当我检查命令它没有。 这是一个新鲜的后缀安装。 这是我的别名文件: # See man 5 aliases for format postmaster: root support: "| /usr/bin/php -q /var/www/pipe/pipe.php" 我运行sendmail [email protected]然后键入它,然后在一个单独的线路types. 它走了。 我检查后缀日志/var/log/mail.log ,这是它说: Nov 2 15:32:33 server3 postfix/local[13284]: 42C429E0B5: to=<[email protected]>, relay=local, delay=156, delays=156/0.01/0/0.05, dsn=2.0.0, status=sent (delivered to command: /usr/bin/php -q /var/www/pipe/pipe.php) 所以根据它的工作,但事实并非如此。 如果我运行echo 'text' | /usr/bin/php -q /var/www/pipe/pipe.php echo 'text' | /usr/bin/php -q /var/www/pipe/pipe.php它工作得很好。 任何想法我做错了什么? […]