pecl install apcu_bc
在 PHP 8 上安装包时遇到以下错误
In file included from /tmp/pear/temp/apcu_bc/php_apc.c:35:
/usr/local/include/php/ext/apcu/apc_arginfo.h:4:3: error: #error Not supported on PHP >= 8.0
# error Not supported on PHP >= 8.0
^~~~~
In file included from /usr/local/include/php/main/php.h:35,
from /tmp/pear/temp/apcu_bc/php_apc.c:23:
/usr/local/include/php/Zend/zend_API.h:85:69: error: 'zif_apcu_store' undeclared here (not in a function); did you mean 'zif_apc_dec'?
#define ZEND_FALIAS(name, alias, arg_info) ZEND_RAW_FENTRY(#name, zif_##alias, arg_info, 0)
^~~~
/usr/local/include/php/Zend/zend_API.h:77:74: note: in definition of macro 'ZEND_RAW_FENTRY'
#define ZEND_RAW_FENTRY(zend_name, name, arg_info, flags) { zend_name, name, arg_info, (uint32_t) (sizeof(arg_info)/sizeof(struct _zend_internal_arg_info)-1), flags }, …
Run Code Online (Sandbox Code Playgroud) 我想跑
app/console doctrine:schema:create --dump-sql
Run Code Online (Sandbox Code Playgroud)
在Ubuntu 16.04上使用Symfony 2.7和PHP7.上面的命令会引发以下错误:
[Symfony的\元器件\调试\异常\ UndefinedFunctionException]
尝试从命名空间"Doctrine\Common\Cache"调用函数"apc_fetch".
以下帖子列出了类似的问题 - 没有可行的解决方案(从我的角度来看)
我已php-apcu
安装,php -m
输出:
[PHP Modules]
apcu
calendar
Core
ctype
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zlib
[Zend Modules]
Zend OPcache
Run Code Online (Sandbox Code Playgroud)
输出 php …
我们目前正试图决定,我们应该在 Symfony 和 Doctrine 中使用什么缓存。它背后的想法是通过缓存值来减少负载和数据库调用。有问题的缓存系统是:memcached、APCu和redis。
我们目前最喜欢的是 APCu,因为 memcache 可能会有一个小的开销,因为它可以作为分布式缓存运行,但是它也允许将 PHP 会话直接存储在 memcache 中。Redis 接缝“太多了”,因为它可以用作数据库,所以可能会有很多开销,这就留下了 APCu。
我们目前使用的 Symfony 版本是 2.8,我们可能会在不久的将来更新到 3.x,以便更好地集成缓存(对于3.1和3.3,我们可能会等待 Symfony 3.3 发布)
memcached 的优势很明显,它是分布式的,这意味着多个服务器可以访问它。然而,我们目前只在一台服务器上运行 Symfony 应用程序,还没有计划改变这一点。
问题:三种不同缓存系统的优缺点是什么?特别是,当使用 Symfony 2.8 与使用 Symfony 3.x 时?什么是负载,它们会放在系统上吗?
如果问题是基于意见的,请随时关闭它。
安装 APC 时出现以下错误
我也遵循了https://wiki.bitnami.com/Components/PHP#How_to_install_APC_module.3f 中提到的指导方针,但同样的错误。
我正在尝试将它安装在 Google App Engine 中 Wordpress 的 Bitnami 图像中。
pecl install apc
WARNING: configuration download directory "/tmp/pear/download" is not writeable. Change download_dir config variable to a writeable dir to avoid this warning
Cannot install, php_dir for channel "pecl.php.net" is not writeable by the current user
user@edudrona-prod-vm:~$ sudo pecl install apc
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 bytes)
.....................................done: 171,591 bytes
55 source files, building
running: phpize
Configuring for:
PHP Api Version: …
Run Code Online (Sandbox Code Playgroud) 当我向我的一个实体添加一个列并将其发布用于生产时,我有这个问题我必须重新启动Apache才能清除Doctrine元数据APC/APCU缓存.
我已尝试过以下所有命令,但没有一个对我有用:
php -r "apc_clear_cache();"
php -r "apcu_clear_cache();"
sudo php app/console doctrine:cache:clear-metadata
sudo php app/console doctrine:cache:clear-query
sudo php app/console doctrine:cache:clear-result
Run Code Online (Sandbox Code Playgroud)
我收到了--env = prod的错误消息
sudo php app/console doctrine:cache:clear-metadata --env=prod
sudo php app/console doctrine:cache:clear-query --env=prod
sudo php app/console doctrine:cache:clear-result --env=prod
[LogicException]
Cannot clear APC Cache from Console, its share in the Web server memory and not accessible from the CLI.
Run Code Online (Sandbox Code Playgroud)
我可以让它刷新Doctrine缓存的唯一方法是重启我的apache服务器,这有时可能是一个问题.
我的Symfony项目中Doctine的缓存设置:
doctrine:
orm:
metadata_cache_driver: apc
result_cache_driver: apc
query_cache_driver: apc
second_level_cache:
enabled: true
log_enabled: false
region_cache_driver: apc
Run Code Online (Sandbox Code Playgroud)
在每次向生产发布新架构更新时,如何在不重新启动Apache的情况下清除APC缓存.如果负载均衡器后面有许多服务器,情况会更糟.
我正在尝试在Windows上设置带有APCu扩展的PHP 8.2。
但是,似乎PHP 8.2兼容性仅添加到最新的APCu版本5.1.22(2022-09-19 发布)中,并且php_apcu.dll
缺少相应的文件 - 我在两个位置都找不到它:
当我尝试使用以前的 APCu 版本5.1.21时,出现以下错误:
PHP Warning: PHP Startup: apcu: Unable to initialize module
Module compiled with module API=20210902
PHP compiled with module API=20220829
These options need to match
Run Code Online (Sandbox Code Playgroud)
那么我应该将 PHP 安装降级到8.1.x吗?
APCu只会获取存储在当前页面加载中的值.
刷新这两次:
<?php
var_dump(apcu_fetch("test"));
apcu_store("test", "works", 3600);
var_dump(apcu_fetch("test"));
?>
Run Code Online (Sandbox Code Playgroud)
输出以下内容:
bool(false) string(5) "works"
Run Code Online (Sandbox Code Playgroud)
因此它会在当前页面加载时存储数据.之后它就不存在了......
我正在使用PHP 7.0.0上的默认配置的最新稳定版本(5.1.2).
我尝试过不同版本的APCu和PHP 7.在Google上也找不到类似的东西......
我再次遇到APCu和PHP7的问题.这是我的conf.
framework:
validation:
cache: validator.mapping.cache.doctrine.apc
serializer:
cache: serializer.mapping.cache.apc
doctrine:
orm:
metadata_cache_driver: apcu
result_cache_driver: apcu
query_cache_driver: apcu
Run Code Online (Sandbox Code Playgroud)
网站工作正常,但是当我发送表单时,我总是收到此错误:
[2016-06-29 09:17:12] request.CRITICAL:未捕获PHP异常Symfony\Component\Debug\Exception\UndefinedFunctionException:"尝试从命名空间"Doctrine\Common\Cache"调用函数"apc_fetch"." at ROUTE_TO_PROJECT/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php第41行{"exception":"[object](Symfony\Component\Debug\Exception\UndefinedFunctionException(code:0):试图调用来自命名空间\"Doctrine\Common\Cache \"的函数\"apc_fetch \".在ROUTE_TO_PROJECT/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php:41)"} []
这是我的作曲家:
"require": {
"php": ">=5.5.9",
"symfony/symfony": "3.0.*",
"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"symfony/swiftmailer-bundle": "^2.3",
"symfony/monolog-bundle": "^2.8",
"sensio/distribution-bundle": "^5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "^2.0",
"knplabs/knp-paginator-bundle": "^2.5",
"liip/imagine-bundle": "^1.5",
"jms/serializer-bundle": "^1.1",
"symfony/assetic-bundle": "^2.8",
"gopay/payments-sdk-php": "^1.1",
"knplabs/knp-snappy-bundle": "~1.4",
"friendsofsymfony/user-bundle": "~2.0@dev"
Run Code Online (Sandbox Code Playgroud)
为什么Symfony调用apc_fetch而不是apcu_fatch?
我在使用PHP将本地结果存储在本地时遇到问题。
用APC
?
apc_store("foo", "bar");
$ret = apc_fetch("foo");
Run Code Online (Sandbox Code Playgroud)
用APCu
?
apcu_store("foo", "bar", 0);
$ret = apcu_fetch("foo");
Run Code Online (Sandbox Code Playgroud)
我将apc_store / apcu_store与apc_store / apcu_store存储在一个php脚本的php_cli下,并与apc_fetch / apcu_fetch一起在另一个php脚本中进行获取,并发现其$ret
为空。
同时,shmop
:
$shmKey = ftok(__FILE__, 't');
$shmId = shmop_open($shmKey, "c", 0644, 1024);
$dataArray = array("foo" => "bar");
shmop_write($shmId, serialize($dataArray), 0);
$retArray = unserialize(shmop_read($shmId, 0, shmop_size($shmId)));
$ret = $retArray['foo'];
Run Code Online (Sandbox Code Playgroud)
在这里,我得到$ret
:"bar"
。
APC/APCu
中间结果是否应该像本地缓存一样shmop
?
我在php7.2-apache-stretch上使用apt-get install安装了php-apcu,但无法启用它。apcu.so和apcu.ini文件是在安装过程中创建的。服务Apache也将重新启动,并且apcu.ini的内容也不错,但是php -m在列表中未显示apcu。也曾经尝试过phpenmod,但似乎还是行不通。但是我在安装过程中没有出现任何错误。该问题似乎与映像有关,因为我也曾尝试以相同的方式在新鲜的Debian映像上安装apcu,并且它正在工作。
有什么想法吗?
我正在尝试在我的 docker 容器上启用 apcu cli 以运行我的测试。这是我的 docker 文件,我使用:
当我尝试在这个 docker 中运行我的测试时,它由于 apcu 错误而失败。但是,在 prod 中,apcu 运行良好,因为它已启用但测试需要启用 cli。
FROM php:7.3-cli
ARG APCU_VERSION=5.1.11
RUN apt-get update && apt-get -y install git zip libzip-dev wget \
zlib1g-dev unzip libpq-dev git-core libmcrypt-dev vim libfcgi0ldbl gnupg \
libfreetype6-dev libjpeg62-turbo-dev libpng-dev libicu-dev
#INSTALL COMPOSER
RUN echo "memory_limit = -1" > /usr/local/etc/php/conf.d/memory_limit.ini
RUN curl -sS http://getcomposer.org/installer | php -- --filename=composer && chmod a+x composer && mv composer …
Run Code Online (Sandbox Code Playgroud) 我无法分别为不同的 php 版本安装 apcu 等 php 扩展。我在 MacOS Mojave 上运行 php7.1 和 php7.3(通过 brew 安装)
我已经尝试过类似的事情,
pecl -d php_suffix=7.1 install <package>
因为我在这里找到了这个建议。但它根本不起作用。
具体问题是php7.1安装apcu的同时安装php7.3。无论我做什么 - apcu get 仅适用于 php7.3。
当我运行时php -v
我得到PHP 7.1
当我检查目录/usr/local/Cellar/php@7.1/7.1.30_1/include/php/ext
时没有apcu
有没有办法告诉 pecl 应该为哪个版本安装扩展?