我正在尝试在redhat上安装apc,所以我做了: pecl install apc 我说对了: Use apxs to set compile flags (if using APC with Apache)? [yes]: 我得到这个: checking for re2c… no configure: WARNING: You will need re2c 0.9.11 or later if you want to \ regenerate PHP parsers. 和 checking whether apc needs to get compiler flags from apxs… Sorry, I was not able […]
我在php cron作业中出现内存错误: Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 71 bytes) in /opt/matrix/core/lib/DAL/DAL.inc on line 830 crontab的适用部分是: $ sudo crontab -u www-data -l MAILTO=root # mh dom mon dow command */15 * * * * php /opt/matrix/core/cron/run.php /opt/matrix 我在Debian Squeeze上运行,完全更新。 显而易见的解决scheme是cli具有低内存限制(64MB)。 但是,/etc/php5/cli/php.ini说这是无限的。 $ cat /etc/php5/cli/php.ini | grep memory_limit memory_limit = […]
我已经将这些行添加到/etc/apt/sources.list deb http://packages.dotdeb.org wheezy-php56 all deb-src http://packages.dotdeb.org wheezy-php56 all 但仍sudo apt-get update或sudo apt-get upgrade不要碰php。 php –version仍然是 PHP 5.4.39-0+deb7u2 (cli) (built: Mar 25 2015 08:33:29)
我已经使用Homebrew安装并configuration了新版本的PHP,包括MySQL支持和XDebug。 这工作正常。 不过,我也需要安装对PostgreSQL的支持。 我该怎么做? 我已经想通了,首次安装PHP很容易,只需要添加下面的选项: homebrew install php53 –with-pgsql 当我的PHP已经安装完毕,我怎么能达到类似的效果,而不需要重新安装? 或者,如果我重新安装,所有configuration和其他设置,如XDebug,保存?
我有一个PHP脚本创build一个目录,并将图像输出到目录。 这在Apache下工作得很好,但是我们最近决定切换到NGINX来更多地使用我们有限的RAM。 我正在使用PHP mkdir()命令来创build目录: mkdir(dirname($path['image']['server']), 0755, true); 切换到NGINX后,我收到以下警告: Warning: mkdir(): Permission denied in … 我已经检查了父目录的所有权限,所以我确定我可能需要更改NGINX或PHP-FPM的“用户”,但我不知道该怎么做(我从来没有指定用户APACHE权限)。 我似乎无法find关于此的很多信息。 任何帮助将是伟大的! (注意:除了这个小小的挂断之外,切换到NGINX已经非常的无缝了,我第一次使用它,从字面上来说,花了大约10分钟就可以用NGINX启动和运行。摆脱困境。)
大约每周一次,但有时甚至几天后运行良好,我的EC2实例变得没有反应。 Munin的内存图表讲述了一个非常简单的故事:分配给“应用程序”的内存开始增长,直到swap完全被使用并且实例被有效地closures为止。 另一个自定义图表显示,不断增长的过程是apache2。 我使用mod_php和几个PHP脚本运行标准的prefork Apache安装程序。 正如你在下面的图表中看到的,触发apache2进程开始消耗越来越多的内存的事情发生了。 我发现了第一个绿色尖峰,并在事情失控之前重新启动了Apache。 第二个秒杀得到了更远,实例必须彻底重新启动。 Munin记忆图 我想知道的是如何最好的debugging。 使用FastCGI设置PHP并让它在自己的进程中运行的缺点是什么是一个很好的方法来找出它是Apache还是PHP和我的代码的组合导致过度的内存使用? 你们会采取什么措施来追踪这个问题? 更新:我能跟踪泄漏后,涉及strace,如马特build议如下。 在find一个在内存中不断增长的apache2进程之后,我又添加了一些error_log()调用到我的PHP脚本中,这个脚本打印出了执行中各个点(使用ps的输出)使用的RSS总量。 然而事实certificate这是误导性的 – 虽然看起来RSS只是在我的脚本执行完毕后才跳转,后来的debugging显示事实并非如此。 小心! 幸运的是,所有这些error_log()调用最终都是有用的。 当我启动strace( strace -p <pid> -tt -o trace.log -s 256 )时,我看到对于每个请求,进程分配了大约400k的内存(寻找“brk”系统调用并减去来自最后一次呼叫的第一个呼叫的参数 – 一些通常会一个接一个地进入)。 然后,我search了包含我的error_log()消息的最近的“写入”系统调用,该消息告诉我脚本内存分配的哪一点。 有一些更具战略意义的调用error_log()调用来更准确地查明位置,我终于find了罪魁祸首。 当我们从我们的PHP脚本调用curl_exec()时,内存泄漏。 一些与处理SSL连接有关的curl代码是做错了事 – 当我切换到HTTP时泄漏消失了。 Curl的更新日志引用了一些在7.19.5(我们在7.18.2)中修复的SSL内存泄漏,所以我会在下一步尝试。 与此同时,我正在运行一个非常低的MaxRequestsPerChild,使Apache保持在合理的范围内。 感谢大家!
嗨,当我尝试通过pecl安装APC安装APC-3.1.5甚至pecl安装APC 当软件包进入make命令时,出现以下错误: running: make /bin/sh /var/tmp/pear-build-root/APC-3.1.5/libtool –mode=compile cc -I. -I/var/tmp/APC -DPHP_ATOM_INC -I/var/tmp/pear-build-root/APC-3.1.5/include -I/var/tmp/pear-build-root/APC-3.1.5/main -I/var/tmp/APC -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /var/tmp/APC/apc.c -o apc.lo mkdir .libs cc -I. -I/var/tmp/APC -DPHP_ATOM_INC -I/var/tmp/pear-build-root/APC-3.1.5/include -I/var/tmp/pear-build-root/APC-3.1.5/main -I/var/tmp/APC -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /var/tmp/APC/apc.c -fPIC -DPIC -o .libs/apc.o In file included from […]
目前,我的PHP在5.3.3上,如何升级它? 另外我怎样才能升级任何东西? 例如,如果我想升级phpMyAdmin?
我帮助在澳大利亚的一个大型游戏网站。 我们从当地时间上午7点到第二天凌晨1点,每周的每一天都进行比赛。 自该网站发布以来,我们一天都没有跳过。 当然,这使得维护非常困难,我们发现我们的临时服务器在我们的生产分支之前多达50次提交。 通常情况下,主开发人员必须非常早地合并分支机构,确保一切正常。 我们一直在试图使我们的中转站点与我们能够到达的生产站点类似,但是我们只能使其类似。 我们的网站是基于Laravel实时Node.JS服务器。 我们正在使用Laravel Forge。 有没有人有任何build议,我们如何推动更新更频繁? 我们对任何事情都开放。
我刚刚安装了XAMPP。 当第一次打开PHPMyAdmin时,我注意到它非常缓慢。 在本地主机上打开每个页面需要将近5秒钟,这是没有意义的。 我做了一个小小的testing案例,将责备推移到PHPMyAdmin上: $con = new PDO("mysql:host=localhost;dbname=mysql", "root", ""); $statement = $con->query('SELECT host,user,password FROM user;'); $users = $statement->fetchAll(PDO::FETCH_ASSOC); 上面的脚本需要大约3秒的时间才能运行(尽pipe第一次运行时花费了将近8秒的时间)。 然后检查是否是PDO的错误我试着用mysql_connect来代替: $con = mysql_connect("localhost", "root", ""); mysql_select_db("mysql", $con); $result = mysql_query('SELECT host,user,password FROM user;'); 完成的时间完全相同。 我以为这是PHP的错误,但PHP代码和静态文件服务比我可以点击刷新更快。 我通过运行这个小脚本来testingPHP: header("Content-Type: text/plain"); for($i = 0; $i < 5000; $i++) { echo sha1(rand()) . "\n"; } 5000 sha1计算和页面仍然显示比我刷新我的窗口更快捷。 然后我觉得这是MySQL的错。 […]