我正在尝试在共享托管服务器上运行Drupal安装.(我只是订阅了一个提供商 - 我没有这个盒子.)
我需要增加Apache服务器的PHP内存限制.我试过了
ini_set('memory_limit', '64M');
Run Code Online (Sandbox Code Playgroud)
在settings.php(每个请求中包含的文件)中,但这会导致内部服务器错误500.如果我将其取出,我会收到此错误:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 19456 bytes)...
Run Code Online (Sandbox Code Playgroud)
附带问题:19456小于33554432.为什么说允许的大小已经用尽?
我也试过把它放在.htaccess上:
php_value memory_limit 128M
Run Code Online (Sandbox Code Playgroud)
这没有效果.
我目前正在尝试获取一个表单,允许使用PHP在服务器上上传和调整大小的图像.客户端上传的每张图片大小约为2.5mb.
我目前正在使用该move_uploaded_file()功能.
将文件移动到服务器上没有问题.当我尝试裁剪时出现问题.在我的主机上没有ImageMagick我正在使用这个设置(不是所有的代码只是相关的,这是在循环中$width等等改变不同的裁剪尺寸)
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
imagejpeg($image_p, $output_filename, 80);
Run Code Online (Sandbox Code Playgroud)
目前,这只适用于2张图片.如果提交了3个或更多,我会收到"内存耗尽"错误.我研究了这个,因为我的内存限制是120mb.显然,该imagecreatefromjpeg函数使用了大量内存,特别是如果文件具有较大的分辨率(我的确如此 - 因此我需要裁剪/调整大小).
有谁知道更有效的方法来完成这项任务?我在google上进行了研究,但每个人都使用相同的技术.
我的PHP应用程序运行速度有点慢,目前内存效率不高.我的整个服务器经常停机,我想我应该责备这个应用程序.我以为我会监视内存使用情况并检查我有多少作为限制:
echo 'Memory in use: ' . memory_get_usage() . ' ('. memory_get_usage()/1024 .'M) <br>';
echo 'Peak usage: ' . memory_get_peak_usage() . ' ('. memory_get_peak_usage()/1024 .'M) <br>';
echo 'Memory limit: ' . ini_get('memory_limit') . '<br>';
Run Code Online (Sandbox Code Playgroud)
这显示以下内容:
Memory in use: 629632 (614.921875M)
Peak usage: 635696 (620.796875M)
Memory limit: 128M
Run Code Online (Sandbox Code Playgroud)
怎么会这样?使用的内存是否大于内存限制?要么是真的坏了,要么根本不理解memory_limit设置的工作原理(或memory_get_usage())
谢谢你们.
我们网站上的一些页面达到了PHP内存限制,目前设置为128MB.当请求将内存限制提高到256MB时,我们的托管公司的工程师告诉我们:
在我们的服务器上"平均请求需要少于64MB的RAM"
和
"将内存限制转移到256MB实际上会创建192M内存的平均分配,而不会在大多数请求中使用"
这是正确的,memory_limit数量实际上是预先分配的,并且对于我们的大多数请求都会浪费192MB吗?
谢谢!
我知道可以很容易地使用命令memory.limit(size = N)增加R的内存限制。如果我尝试将其减小到小于N的值,则出于显而易见的原因,我会收到错误消息:
Warning message:
In memory.limit(size = 10) : cannot decrease memory limit: ignored
Run Code Online (Sandbox Code Playgroud)
有没有办法减少内存限制的前期运行代码(或作为第一个命令)?我出于培训目的(例如如何处理内存问题?)来实现此目的。
在Python中,我可以编写一个程序来计算无限大小的整数.就在前几天,我做了第一百万个斐波纳契数,而且它太大了它无法放入控制台.如果可以在Python中做到这一点,我的理解是用C语言编写的,那么在C++中如何做同样的事情呢?它必须是可能的,否则我不知道如何在Python中完成它.我也相信在Java/C#中有类似的东西称为Biginteger,但我找不到任何说它如何在C++中实现的东西.
我有一些简单的尝试从一个文件写到另一个文件.
$content=file_get_contents("C:\Users\Borut\Desktop\sql_PW1\mm_ads (1).sql");
file_put_contents("C:\Users\Borut\Desktop\sql_PW1\New", $content);
Run Code Online (Sandbox Code Playgroud)
我读的文件大约是80M大,php中的内存限制是128M,但是我收到一个错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 80739522 bytes)
Run Code Online (Sandbox Code Playgroud)
所以即使我试图分配的内存实际上更小,内存也已耗尽?我可以通过增加内存限制来完成这项工作,但我想知道为什么它不能使用此限制.
我试图从命令行运行PHP脚本(magento reindexer脚本).该脚本消耗大量内存,因此我收到以下错误:PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 72 bytes) in /home/karanta/www/karanta.fr/lib/Zend/Db/Adapter/Abstract.php on line 691
要解决此问题,我编辑了/etc/php5/cli/php.ini文件并进行了设置memory_limit = 2048M.
要检查配置,我运行一个包含phpinfo();cli 的脚本,我看到:memory_limit => 2048M => 2048M,所以似乎正确考虑了配置.ini_get('memory_limit);也返回2048M.
但是当我重新运行reindex脚本时,我仍然PHP Fatal error: Allowed memory size of 536870912 bytes exhausted感觉到memory_limit仍然是512M.该脚本无法完成,我没有想法如何扩充memory_limit以允许脚本完成.
编辑:我也尝试将指令ini_set("memory_limit", -1);直接添加到PHP脚本中,它仍然挂起相同PHP Fatal error: Allowed memory size of 536870912 bytes exhausted.
额外的信息:
服务器是运行Debian GNU/Linux 7.5和64GB RAM的ovh专用机器!
php -v 收益:
PHP 5.6.12-1(cli)版权所有(c)1997-2015 PHP Group …
我正在尝试逐行读取文件。问题是文件太大(超过 500000 行),我达到了内存限制。我想知道如何在没有内存限制的情况下读取文件。
我正在考虑多线程解决方案(例如将文件分成较小的组(每组 100000 行)并在多线程中读取它),但我不知道如何详细执行。请帮助我(对不起,英语不好)。
这是我的代码
$fn = fopen("myfile.txt", "r");
while(!feof($fn)) {
$result = fgets($fn);
echo $result;
}
fclose($fn);
Run Code Online (Sandbox Code Playgroud) 我有一个帖子的关系数据库。
帖子表 <-- OneToMany
帖子猫表 <-- ManyToOne
类别表 <-- OneToMany
如果我使用 Doctrine @ORM 来连接表,在使用注释的实体中。我出现白屏,并在错误日志中显示错误:
emergency.EMERGENCY: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1052508160 bytes) {"type":1,"file":"/[PATH TO SYMFONY]/vendor/twig/twig/lib/Twig/Extension/Debug.php","line":66}
Run Code Online (Sandbox Code Playgroud)
我已经多次提高内存限制,从 64M 到 1024M。
还有其他人发现这个问题吗?我认为执行> Gig 内存的文件是不好的。
如果我使用查询生成器编写查询,我会得到我期望的结果。我认为如果我能让 Doctrine 关系映射发挥作用,那就更好了。有人对此有意见吗?
我希望就此事得到一些建议。
提前致谢。
乔
------------ 编辑回复评论-------------------------------- ------
感谢您的评论@Cerad。数据库中只有大约 10 行。我也在app_dev.php 中。以下是我的文件的一些摘录。
帖子表
class Post
{
//... ^ table collumns
/**
* @ORM\OneToMany(targetEntity="PostCats", mappedBy="Post")
*/
protected $PostCats;
public function __construct()
{
$this->PostCats = new ArrayCollection();
}
}
Run Code Online (Sandbox Code Playgroud)
后猫加入表。
class PostCats
{
//... …Run Code Online (Sandbox Code Playgroud)