Articles of PHP

使用mod_fcgid而不是mod_php

我应该怎么做才能使用mod_fcgid而不是mod_php在Ubuntu和CentOS上。 两者之间的主要优点和区别是什么?

我的服务器发生了什么事? 高负载,大量空闲的CPU时间,低磁盘利用率

我运行一个网站,并发送一个合法的select,每日电子邮件通讯订阅。 虚拟主机和电子邮件发送都由同一台机器完成。 我有大约10万订阅者select了我的每日电子邮件通讯。 我的PHP脚本做了相当不错的工作,直到最近才把邮件发送给他们,但是随着列表的增长,我跟不上。 当我运行顶部时,我的负载非常高 – 通常至less有6或7,有时甚至高达15 – 尽pipe我只有两个CPU。 但是,当我运行sar时,CPU空闲时间平均约为30%。 所以,看来我没有CPU绑定。 当我运行iostat时,好像我没有磁盘绑定,因为我的每个设备的%util很低(不超过5%)。 鉴于我似乎没有CPU绑定或磁盘绑定, 为什么最高报告如此高的负载? 此外,由于我似乎没有CPU绑定或磁盘绑定, 为什么我的电子邮件发送脚本无法跟上? 以下是我在运行top时看到的内容: top – 11:33:28 up 74 days, 18:49, 2 users, load average: 7.65, 8.79, 8.28 Tasks: 168 total, 5 running, 162 sleeping, 0 stopped, 1 zombie Cpu(s): 38.9%us, 58.6%sy, 0.8%ni, 0.0%id, 0.7%wa, 0.2%hi, 0.8%si, 0.0%st Mem: 3083012k total, 2144436k […]

重新编译PHP,现在Apache不parsingPHP文件

我今天早些时候重新编译了PHP,现在当您在浏览器中访问PHP页面时,Apache将显示其源代码而不是parsing它。 我是否需要重置一些configuration或重新编译Apache? 这是在CentOS 5.5与Apache 2.2和PHP 5.2.17

如何在启用了PDO的情况下在Red Hat Enterprise Linux上运行PHP 5.3? PHP53与yum一起安装

这个问题很复杂,我根本不是专家,所以请耐心等待。 我的服务器pipe理团队用一个标准的RHEL框设置了我。 它有PHP预装,以及Apache。 我现在试图在机器上安装Drupal 7,这已经提醒我一个问题: 数据库支持禁用 您的Web服务器似乎不支持任何常见的PDO数据库扩展。 检查您的托pipe服务提供商,看他们是否支持PDO(PHP数据对象),并提供Drupal支持的任何数据库。 谷歌search这个主题,并与我们的服务器人谈话,似乎我们需要启用php.ini文件中的PDO扩展。 很好,在/etc/php.ini中,我添加了扩展名= pdo.so和extension = mysql_pdo.so行。 没有什么改变,我有几个担心。 当我们在服务器上search一个pdo.so文件时,它位于/ usr / somewhere内部的modules目录下。 我们将path复制到php.ini中作为extension_dir=[that path] 。 重新启动Apache,没有改变。 当我运行php -version时,我看到一个错误消息,说它无法加载dynamic库,但它正在寻找/ usr / local / lib / php / extensions / some-strange-no- debug-non-zts-0330i504065 /目录。 不在我们刚刚在php.ini中设置为“extensions_dir”的目录中。 在phpinfo()输出中,它列出了我们在php.ini中设置的扩展目录。 其次,在phpinfo()输出中,在“configuration命令”部分中,存在–disable-pdo标志。 如果我检查which php ,然后在那里导航,在那个目录中有另一个名为php-config的文件。 打开那个,TA DA! 有一个“extension_dir”值匹配前面提到的/some-strange-no-debug-non-zts-92ur9u92i/目录。 这是否需要用适当的标志重新编译? 可以在php.ini中修复吗? 如果没有,我们甚至会重新编译php,如果它是用yum或rpm安装的话? 谢谢!!! 更新1 我应该说,我正在使用RHEL5 php53软件包。 我已经运行yum安装php53-pdo。 如果我尝试运行yum […]

通过在Apache上selectCherokee来提供dynamic内容,我(初学者)是什么东西?

我是一个完整的初学者,并计划build立一个照片分享网站。 这是我正在计划的设置,基本上是为了一个开始 – 切诺基(而不是Apache)提供dynamic内容(基于python的应用程序)和Nginx提供静态文件。 既然,我是初学者,我有什么,输了? 那么,根据你的经验,有人可以告诉我,通过selectApache上的Cherokee来为PHP / Python /中的dynamic内容提供服务会导致什么后果? 除了事实上有很多的文档,许多人可以帮助,当有一个问题,如Apache是​​完善的,最stream行的Web服务器? 再次,我的意图不是在这里喷出一场火焰战争。 只是想知道切诺基在性能,可靠性和速度方面是否比Apache更好,何时重要(峰值负载时间)。 另外,我听说它比Apache在服务dynamic内容方面快得多,这是真的吗? 更新:在另一种情况下,有人可以build议一个忙碌的网站的Picasa,flickr,或YouTube的大小dynamic内容Web服务器? build立我的网站,我相信会放宽我的照片和video分享网站的扩展。 这是有点主观的,但这不是主要问题,虽然我也想对此做一些澄清。

在Linux上安装PHP

我正在尝试设置与oci8支持的PHP。 我认为我已经configuration所有正确的开始之前oci,这里是我如何尝试开始安装: ./configure -prefix=/common_share/APACHE/server –with-apxs2=/common_share/APACHE/server/bin/apxs ./configure –with-oci8=instantclient,/common_share/APACHE/oracle-cli –with-libxml-dir=/common_share/APACHE/libxml –with-config-file-path=/common_share/APACHE/php/php.ini 我没有root访问权限,所以我必须手动安装。 反正我开始make install后得到的错误是: /usr/bin/ld: skipping incompatible /common_share/APACHE/oracle-cli/libclntsh.so when searching for -lclntsh /usr/bin/ld: cannot find -lclntsh collect2: ld returned 1 exit status make: *** [sapi/cli/php] Error 1 我不知道那里出了什么问题,接下来该怎么做。 任何人有类似的问题,并解决它?

PHP比它应该慢

我有一个运行在2.5GHz双核至强四核L5420的服务器。 我一直在优化我的服务器,并已经到了我的最后瓶颈:PHP。 我非常简单的PHP脚本: ./test.php <?php print_r(posix_getpwuid(posix_getuid())); 我不那么科学,因为他们不会注意线程locking,但是不够科学的给我一个合理的multithreading请求每秒的结果脚本: ./benchmark-php #!/bin/bash if [ -z $1 ]; then LIMIT=10 else LIMIT=$1 fi if [ -z $2 ]; then SCRIPT="index.php" else SCRIPT=$2 fi START=$(date +%s.%N) COUNT=0 while (( $COUNT < $LIMIT )) do php $SCRIPT > /dev/null COUNT=$(echo "$COUNT + 1" | bc) done END=$(date +%s.%N) DIFF=$(echo "$END – […]

在后缀中的文本压缩

我有以下安排。 一个服务器编译电子邮件在PHP和另一台服务器运行后缀 (因此我有networking延迟)。 每个电子邮件约300Kb,并发送一封电子邮件(使用Zend电子邮件类)大约需要0.2s 。 但是,如果我压缩电子邮件文本内容,大小变为30Kb ,延迟大约0.06 。 问题是,后缀不支持文本压缩,因此我正在考虑开发一个milter ,它将解压缩队列中的电子邮件。 你能想到这个解决scheme的任何缺点,或者你可以提出任何其他的select吗? 编辑:我工作的公司每天向注册用户发送> 100 000封电子邮件,我正在努力将发送时间减less到最短。

Strace Apache进程输出显示24秒等待?可能是什么原因?

对两个系统调用之间执行24秒的apache儿童执行strace。我怎样才能确定是什么原因导致的这种行为。看起来像两个孩子都采取几乎相同的时间(24.7和23.92)秒。 我们正在使用php5和MySQL 5的Apache prefork / var / lib / php5 /是php会话文件夹 apache children1的strace输出与processid -20539 ps -u www-data | grep apache2 | awk'{print'-p“$ 1}'| xargs strace -o /strace/strace.log -ff -s4096 -r 20539 0.000064closures(13)= 0 20539 0.000060 open(“/ var / lib / php5 / sess_9t2cvnvdoruh666rjpm515idm0”,O_RDWR | O_CREAT,0600)= 13 20539 0.000065 flock(13,LOCK_EX)= 0 20539 24.711888 fcntl(13,F_SETFD,FD_CLOEXEC)= 0 20539 […]

可以清除caching文件没有特定的扩展名或驻留在特定的目录

我有清漆安装caching(很多)我的服务服务的图像。 大约每秒4k的约200幅图像,清漆按照以下规则高兴地服务: if (req.request == "GET" && req.url ~ "\.(css|gif|jpg|jpeg|bmp|png|ico|img|tga|wmf)$") { remove req.http.cookie; return(lookup); } 现在,我最近在同一台服务器上添加了另一个服务,创build了缩略图,但不添加特定的扩展名。 这些文件具有以下文件名模式: http://www.example.com/thumbnails/date-of-thumbnail/xxxxxxxxx.xx 其中xx是数字,所以xxxxxxxxx.xx可能是6482364283.73(最后两个数字)(实际上这是时间戳,所以我可以在文件名中保留额外的信息) 这有副作用,清漆不caching他们,我看到他们不断由Apache本身服务。 即使我现在可以改变格式来创build以.jpg结尾的thumbnails ,有没有办法改变我的varnish守护进程的vcl文件来caching一个目录下的所有东西( thumbnails目录),或者是所有包含两个数字的东西延期? 让我知道,如果我可以提供任何额外的信息! 谢谢!