我在运行PHP脚本时收到错误....
Fatal error: Out of memory (allocated 1827405824) (tried to allocate 88800 bytes)
Run Code Online (Sandbox Code Playgroud)
我已将此行添加到我的PHP脚本中..
ini_set("memory_limit","3000M");
Run Code Online (Sandbox Code Playgroud)
这句话似乎确实正确地控制了内存使用量,但我似乎无法将其高于1.8GB.好像上限内存被限制在其他地方.我也加入了php.ini ...
memory_limit = 3000M
Run Code Online (Sandbox Code Playgroud)
有谁知道内存是否在其他地方受到限制?
我正在使用Xampp运行本地服务器.我有Windows 7,64位,4GB内存.我的脚本使用PHP的GD图像库,我在尝试使用ImageCreateTrueColor()分配图像引用时收到错误.
(我知道这是一个巨大的内存 - 但这只是一个脚本,这样做更容易.)
谢谢.
更新....
@elusive @Orbling我希望每个人都对这个问题感到厌倦,但这里有简化的代码来说明问题.
<?php
ini_set("memory_limit","4000000000");
echo "ini_get = " . ini_get('memory_limit') . "<br>\n";
echo "memory_get_usage = " . memory_get_usage(true) . "<br>\n";
$bigImageHandle = imagecreatetruecolor(22200, 24800); //this is line 5
?>
Run Code Online (Sandbox Code Playgroud)
浏览器输出......
ini_get = 4000000000
memory_get_usage = 524288
Fatal error: Out of memory (allocated 1843396608) (tried to allocate 88800 bytes) in
E:\User\My_Webs\experiments\houseshunting\temp\osMaps\t1.php on line …Run Code Online (Sandbox Code Playgroud) 我编写了一个Symfony命令来从API导入一些数据.它的工作原理但问题是当我在数据库中插入一个大的JSON时,我的PHP内存使用量会增加.并且我的unitOfWork在每次激活导入后增加"2".
我已经取消了所有用过的对象,当你想做大量的批处理时,我已经阅读了Symfony2的文档:http://www.doctrine-project.org/blog/doctrine2-batch-processing.html
但是当我使用$em->clear()我的实体管理器时会出现此错误:
注意:未定义的索引:000000007b56ea7100000000e366c259在path-to-application\vendor\doctrine\lib\Doctrine\ORM\UnitOfWork.php第2228行中
这是我的完整代码:
/**
* @see Command
*/
protected function configure() {
$this
->setName('ks:user:runkeepersync')
->setDescription('Synchroniser les activités d\'un utilisateur runkeeper')
->setDefinition(array(
new InputArgument('access_token', InputArgument::REQUIRED, 'Access token'),
))
}
/**
* @see Command
*/
protected function execute(InputInterface $input, OutputInterface $output) {
$accessToken = $input->getArgument('access_token');
$em = $this->getContainer()->get('doctrine')->getEntityManager();
$UserHasServices = $em->getRepository('KsUserBundle:UserHasServices')->findOneByToken($accessToken);
if (!is_object($UserHasServices) ) {
echo "Impossible de trouver l'utilisateur qui possède le jeton ".$accessToken."";
}
$user = $UserHasServices->getUser();
$service = $UserHasServices->getService();
echo "avant de …Run Code Online (Sandbox Code Playgroud) 我刚刚在mac osx 10.7中通过pear安装了phpunit,除了内存限制错误(xdebug启用了报告)之外,一切正常.
我试图将-d memory_limit=512M参数添加到phpunit,但它不适用,因为,在第一个错误,我添加var_dump(ini_get('memory_limit')); exit;并打印字符串(3)"32M"
那么,为什么它没有被应用呢?
除此之外,如果我跑
php -d memory_limit=256M -r "echo ini_get('memory_limit');"
Run Code Online (Sandbox Code Playgroud)
它呼应"256M"
是不是phpunit可能没有执行相同的PHP?
只是想知道C++应用程序使用的最大内存是否有限制
我知道这是2GB - 这是正确的吗?
如果一个C++应用程序尝试请求超过2GB内存,这会导致内存崩溃吗?
最后的问题 - 如果运行C++应用程序的机器已经内存不足而且C++应用程序要求100MB的阵列(即连续的内存),操作系统是否会通过虚拟内存来适应这种情况?
可能重复:
允许的X字节内存大小耗尽
我正在处理一个相当小的大数据库(87mb)导入,为此我使用PHP脚本.所有操作都是在本地安装,在Ubuntu Lucid上安装了apache.
几分钟后运行脚本时,我收到此错误:
Allowed memory size of 268435456 bytes exhausted
Run Code Online (Sandbox Code Playgroud)
我已经memory_limit在php.ini文件中更改为2GB并重新启动了apache.之后我检查了一下phpinfo(),我发现它memory_limit被设置为'2048M'所以一切都好.
但是,当我重新启动我的脚本时,我收到相同的错误,256mb内存限制exkusted.
我哪里错了?
我第一次使用mpdf库,一切正常.我写了一个脚本来创建pdf文件,其中包含一个274行的表.当我运行脚本时,我得到php内存错误.我尝试了不同的场景,但我得到了相同的内存错误.请帮我解决这个错误.我在下面列出了不同的场景及其结果.
php.ini = memory_limit = 256M
script = ini_set('memory_limit','25M');
Result:
memory_get_usage() = 12.75 mb
memory_get_peak_usage() = 12.75 mb
Fatal error: Allowed memory size of 26214400 bytes exhausted
(tried to allocate 261904 bytes)
in C:\xampp\htdocs\XX\lib\pdf\mpdf\mpdf.php on line 14268
Run Code Online (Sandbox Code Playgroud)
php.ini = memory_limit = 256M
script = ini_set('memory_limit',' - 1');
Result:
memory_get_usage() = 12.75 mb
memory_get_peak_usage() = 12.75 mb
Fatal error: Out of memory (allocated 1898971136)
(tried to allocate 261904 bytes)
in C:\xampp\htdocs\XX\lib\pdf\mpdf\mpdf.php on line 14265
Run Code Online (Sandbox Code Playgroud) 我的PHP Web应用程序需要将文件(大小约为2.5到3 GB)上载到服务器.这将如何影响以下指令?
在我的情况下,所需的值是多少?
post_max_size upload_max_filesizememory_limit非常感谢您的帮助.
我目前正在使用dreamhost来托管我的网站.但是,我正在使用的应用程序需要更高的内存限制,然后默认为90M.我对此比较陌生,我尝试了以下尝试修改php.ini文件,但没有任何运气.
我已经浏览了如何为php 5.3创建自定义php.ini文件的wiki,但是我在设置memory_limit时遇到了问题.
我按照以下链接中的说明操作:http://wiki.dreamhost.com/PHP.ini
登录https://panel.dreamhost.com/index.cgi?tr...in.manage&上的面板,并将您的域名更改为使用php5.3(可能是快速cgi)
在用户名下创建一个名为.php的目录,其子目录名为5.3.此目录下的文件将由该用户下设置为使用PHP 5.3的所有域使用.
终端示例
mkdir ~/.php
mkdir ~/.php/5.3
Run Code Online (Sandbox Code Playgroud)
存在此目录后,您可以在其中创建两个文件:
要向PHP添加自定义指令,请在.php/5.3 /下创建一个名为"phprc"的文件,并为其添加配置指令.您不需要将默认的php.ini复制到此文件,因为除了系统php.ini之外还使用它.如果两个文件中都出现指令,则该文件中的指令优先.
nano phprc
Run Code Online (Sandbox Code Playgroud)
在我的phprc文件中,我添加了以下行:
zend_extension=/home/mikdur2/peachjar.com/ioncube/ioncube_loader_lin_5.3.so
ini_set('memory_limit', '128M');
Run Code Online (Sandbox Code Playgroud)
zend_extension在phpinfo()中被拾取并验证,但是,memory_limit不会更改为128M.还有其他方法可以改变内存限制吗?或者是在phprc文件中更改它而不是正确的方法.还有另一篇帖子说明除了memory_limit的init_set之外的所有命令都有效.
顺便说一句:这是phpinfo() - http://peachjar.com/phpinfo.php
我有一个运行大约2个小时的PHP脚本.这是一个cron工作.cron作业每4小时运行一次.
在脚本的末尾,我显示一些内存值.
The memory_get_usage() result is 881568 Bytes (0.840766906738M)
The memory_get_peak_usage() result is 1340304 Bytes (1.27821350098M)
The memory_get_usage(true) result is 1572864 Bytes (1.5M)
The memory_get_peak_usage(true) result is 1835008 Bytes (1.75M)
Run Code Online (Sandbox Code Playgroud)
php.ini中的memory_limit是128M并且它不起作用.我把它提升到256M,现在它可以工作了.
但由于脚本的内存峰值小于2M ....
那么memory_limit参数如何工作?
它是脚本使用的总内存吗?如果是这样,我该如何计算呢?
它是脚本的内存峰值吗?如果是的话,我算得对吗?
我正在使用php 5.3.16.
编辑
我没有任何错误消息.当限制为128M时脚本执行,但永远不会完成.
我正在寻找几个开源工作流程调度程序,用于具有异构RAM使用的DAG作业.调度程序不仅应该调度少于最大线程数,还应该将所有并发任务的RAM总量保持在可用内存之下.
在这个Luigi Q&A中,有人解释说
您可以设置配置中可用资源的数量,然后设置任务消耗的资源数量作为任务的属性.这将限制您一次运行
n该任务.在配置中:
Run Code Online (Sandbox Code Playgroud)[resources] api=1在任务代码中:
Run Code Online (Sandbox Code Playgroud)resources = {"api": 1}
对于Airflow,我无法在其文档中找到相同的功能.最好的方法是在资源池中指定多个可用插槽,并指定任务实例使用资源池中的单个插槽.但是,似乎无法指定任务实例在池中使用多个插槽.
问题:专门针对Airflow,如何指定任务实例的定量资源使用?