PHP:在命令行CLI脚本/Cron脚本中禁用APC模块

时间:2020-01-09 10:45:55  来源:igfitidea点击:

我开发了一个PHP应用程序,并在LAMP上运行。
我在服务器上安装了APC。

APC是一个免费,开放且强大的框架,用于缓存和优化PHP中间代码。
基于APC的缓存非常适合我的网站,但是由于缓存,我的cron作业和php cli脚本无法获取正确的数据。
如何在Linux或者Unix之类的操作系统下的命令行(php-cli)上为所有cron作业禁用APC模块?

该错误可以通过应用稳定的APC补丁来修复。

APC代码被积极维护。
因此,请尝试更新到最新的稳定版本。
如果您直接从脚本中使用" php-cli"," php5-cli"或者" php"二进制文件,请尝试传递-d选项。
此选项可以定义和覆盖启用APC的INI条目。
可以使用以下grep命令行语法找到确切的条目:

### note php.ini path Jan be differnt under Unix or linux ###
grep --color -i enabled /etc/php.d/php.ini

输出示例:

apc.enabled=1

使用以下语法定义值为0(禁用)的apc.enabled条目:

/usr/bin/php -d apc.enabled=0 my.cron.php
/usr/bin/php -d apc.enabled=0 /path/to/myshelljob.php
/usr/bin/php-cli -d apc.enabled=0 /path/to/myshelljob.php

或者,您也可以像oses一样在Linux或者Unix下为cron作业创建一个小的Shell脚本包装:

#!/bin/bash
# Purpose - Create search index file for AWS search web service for our db
# Author: theitroad <www.theitroad.local> 
# -----------------------------------------------------------------------
_php="/usr/bin/php"
_nice="/bin/nice"
_phpargs="-d apc.enabled=0"
_base="/opt/sysadmin/aws"
_tmp="$_base/tmp"
[[ ! -d "$_tmp/$i" ]] && /bin/mkdir "$_tmp/$i"
 
## Run php with APC disabled ###
$_nice -n 3 $_php $_phpargs -f $_base/php/createsearchindex.php