草庐IT

php - 如何为 Apache/PHP 中的特定脚本设置更高的 memory_limit、post_max_size?

我有一个Web应用程序,它将对虚拟主机的所有请求重定向到Controller,然后Controller根据URL决定要包含和运行哪些文件。有一个Web服务可以通过POST接受大型XML文件。我需要应用程序的memory_limit和post_max_为~32M,接受XML的服务除外,这需要它们的限制接近1024M。ini_set('memory_limit','1024M')在脚本中有效,但不适用于post_max_size。我似乎不知道该怎么做。我正在尝试类似的东西:ServerNametest.comDocumentRoot/var/www/test.com/htmlphp_adm

PHP - 执行长脚本时可能遇到的障碍

我在一个函数中运行了一个很长的循环,但没有完成所有最终的迭代并在没有给出任何错误的情况下停止了:functionmy_function(){foreach(range(100,999)as$art_id){$current++;//seebottomflushfunctions...outputProgress($current,$art_id);//seebottomflushfunctions...//doalotofstuffonremoteURL...//includingdownloadimages,//scrapingHTMletc..}}我正在使用flush的一些输出进度

PHP memory_get_peak_usage 和 ini_set ('memory_limit' , '-1' )

我最近遇到了内存分配问题,所以我开始尝试使用ini_set('memory_limit',value);指令,尝试以增量方式输入值。现在,通过网络(和SO)搜索我发现我可以将-1作为value。所以,我做到了,现在脚本完全运行到最后没有中断(在我以前得到内存分配错误之前)。然而,我不明白的是,脚本文件末尾的这两行:$mem=memory_get_peak_usage(true);echo"Peakmem.usage:".round($mem/1024/10124,2)."MB";产生大约10.8MB,当我查看/var/log/messages时,我可以看到这一行:Nov2113:52:

php - 在 PHP 中运行密集的批处理,并避免内存耗尽

我有几千条记录(存储在MYSQL表的一个表中)需要“批处理”。所有记录都包含一个大的JSON。在某些情况下,JSON超过1MB(是的,我的数据库远远超过1GB)。我有一个函数可以获取记录、解码JSON、更改一些数据、将PHP数组重新编码回JSON,然后将其保存回数据库。很简单。FWIW,这是在CakePHP应用程序的上下文中。给定一个ID数组,我正在尝试做这样的事情(非常简单的模拟代码):foreach($idsas$id){$this->Model->id=$id;$data=$this->Model->read();$newData=processData($data);$this

php - 减少数组和 SplFixedArray 的内存使用

我在array()和SplFixedArray()之间做了一些基准测试,我遇到了奇怪的行为。先看我的简单测试(其实就是网上的剪辑版,不好意思,我现在找不到原始出处了):functionformatMemoryUsage($usage){$unit=array('B','kB','MB','GB','TB');$factor=floor((strlen($usage)-1)/3);returnsprintf('%.2f%s(%dbytes)',$usage/pow(1024,$factor),$unit[$factor],$usage);}for($size=1000;$sizeTest

php - 从 PHP 中的物理内存中清除变量的值

一般的问题是:在PHP中取消设置String变量后,是否可以从物理内存中删除该变量的值?问题源于安全标准的某些要求(在处理某些重要数据时,应该无法将数据从内存转储到磁盘)。根据“Ismemoryencrypted?”主题,没有好的方法来加密内存中的数据。因此,当在PHP中取消设置String变量时,您不能确定内存中的数据已被覆盖。关于为变量设置新值的相同故事。因此我很感兴趣是否可以在不更改unset方法的核心代码的情况下从内存中清除变量值? 最佳答案 首先,我不确定删除字符串是否满足您描述的安全要求,因为理论上仍然可以在删除字符串之

Php按值或按引用传递

据我了解,当我按值传递数组时,会创建一个数组副本。即在下面的程序中,$y和$z需要与$x相同的内存。但是内存利用率几乎没有增加。显然我的理解是错误的,谁能解释一下原因。for($i=0;$i 最佳答案 我听说php使用写时复制:http://en.wikipedia.org/wiki/Copy-on-write举个例子:';//outputs14521040//hereweequate$yto$x,butinsteadofcreatingacopy,//phpenginejustcreatesapointertothesamemem

php - PHP 是否根据其限制动态处理内存使用情况?

当PHP的memory_limit设置为50M时,我有一个脚本在大约25秒的运行时成功运行。当我在脚本末尾打印memory_get_peak_usage时,它非常接近50M。当我将memory_limit设置得更高,到90M时,memory_get_peak_usage显示大约75M并且脚本加载速度大约快10秒。不管memory_limit是多少,脚本都会使用大约相同数量的内存,这似乎很直观,但事实似乎并非如此。如果一个脚本在50M的限制下达到50M以下,我预计即使memory_limit增加了,峰值使用量也会相同。我唯一的解释是PHP认识到它接近极限并花时间清除未使用的内存以避免达到

PHP-CLI - 如何减少启动 PHP 进程所需的内存使用量

当PHP进程启动时,它会加载扩展、各种配置指令并创建全局/环境变量等,(我假设)这会耗尽内存。我的目标是引导一个简单的PHP脚本,该脚本使用尽可能少的内存来完成特定任务。示例CLI脚本,例如:printf("\nHelloWorld");上面的代码不依赖于任何默认打开的$_ENV变量或某些PHP流,如果它们不存在,将使PHP进程使用更少的内存。为了运行上面概述的代码,你们会怎么做才能将内存使用量降至最低? 最佳答案 为了获得几个字节,您可以在干净的环境中运行您的PHP代码:env-iphp-r'var_dump(memory_get

php - Codeigniter 优化/加载模型的最佳位置是?

我正在做一个用Codeigniter制作的大型项目,并且我想知道加载所需模型的Controller相关性能是否存在差异。问题:是否应该在构造函数中加载所有模型,或在使用它们的特定函数中,或部分地同时使用这两种方法,即在构造函数中加载整个Controller中普遍使用的模型,以及仅在需要时加载那些很少使用的模型?//请记住,我正在处理的应用程序大多具有大型模型,其中包含的不仅仅是插入/更新/删除功能......//附言我在网上搜索了该主题,但没有找到该主题的任何具体信息。 最佳答案 将在所有网站页面上一致使用的模型最好自动加载到con