`mcrypt_create_iv` 停止,但只能通过 Apache
`mcrypt_create_iv` Stalls, But Only Through Apache
我的 PHP 本地安装最近开始执行此操作,但我不知道发生了什么变化并且可能启动了此操作。当我调用 mycrypt_create_iv
时,它以 100% CPU 的利用率完全停止,但当它被 Apache 调用时, 仅 。当我从 CLI 调用它时,它几乎立即 returns。我的测试文件如下:
<?php echo mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
当然,当我发现这个问题时,这些值就是函数被调用的内容。 PHP 5.5 或 5.6 都会出现此问题,因此我认为这不是特定的 PHP 版本。
我是 运行 Gentoo Linux,所以根本原因可能是构建问题,但我已经重建了 libmcrypt、PHP 和 Apache,但没有任何效果.
经过一些实验,我明白了。
我没有在 make.conf
中设置 APACHE2_MPMS
,所以它默认为 worker
MPM。我将它设置为使用 prefork
并且这个问题被清除了。
我确实设置了 threads
USE 标志,它与 prefork
和 PHP 冲突,所以我删除了那个 use 标志。根据我的个人资料,这意味着大多数带有该标志的软件包仍然设置了它,但 php
和 mod_php
被禁用。
似乎是 php 的错误 (https://bugs.php.net/bug.php?id=69833),已在 5.6.13
中修复
我的 PHP 本地安装最近开始执行此操作,但我不知道发生了什么变化并且可能启动了此操作。当我调用 mycrypt_create_iv
时,它以 100% CPU 的利用率完全停止,但当它被 Apache 调用时, 仅 。当我从 CLI 调用它时,它几乎立即 returns。我的测试文件如下:
<?php echo mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
当然,当我发现这个问题时,这些值就是函数被调用的内容。 PHP 5.5 或 5.6 都会出现此问题,因此我认为这不是特定的 PHP 版本。
我是 运行 Gentoo Linux,所以根本原因可能是构建问题,但我已经重建了 libmcrypt、PHP 和 Apache,但没有任何效果.
经过一些实验,我明白了。
我没有在 make.conf
中设置 APACHE2_MPMS
,所以它默认为 worker
MPM。我将它设置为使用 prefork
并且这个问题被清除了。
我确实设置了 threads
USE 标志,它与 prefork
和 PHP 冲突,所以我删除了那个 use 标志。根据我的个人资料,这意味着大多数带有该标志的软件包仍然设置了它,但 php
和 mod_php
被禁用。
似乎是 php 的错误 (https://bugs.php.net/bug.php?id=69833),已在 5.6.13
中修复