我的PHP脚本在飞行中创建PDF,数据来自mysql数据库表,它工作正常,直到30条记录,但比它说的更多
我来自http://code.google.com/p/dompdf/
的dompdfFatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 56214 bytes) in F:\xampp\htdocs\wiseworker\dompdf\lib\class.pdf.php on line 3043
但是我使用了ini_set("memory_limit","96550M");
并在php.ini中设置
; Maximum amount of memory a script may consume (5120MB)
; http://php.net/memory-limit
memory_limit = 96550M
我还增加了查询执行时间
if( !ini_get('safe_mode') ){
set_time_limit(0);
}
但它只限制在45字节到65字节左右,如果mysql表包含数百条记录会发生什么?
答案 0 :(得分:4)
在页面顶部使用以下内容:
ini_set('max_execution_time', 3000);
ini_set('memory_limit','16M');
此设置仅对您当前的脚本有效。
答案 1 :(得分:3)
45个字节不是限制 - 33554432是限制,即32M。 45个字节只是PHP尝试分配和失败的一个块(由于它可能是任何东西,因此不是很有用)。检查您实际上是否正在编辑正确的php.ini,它实际上反映在您的phpinfo()中。 96550M顺便说一下94G的内存 - 你真的那么多吗?
尝试取消设置您未使用的对象,并尝试通过gc_collect_cycles
(请参阅:http://www.php.net/manual/en/function.gc-collect-cycles.php)手动运行gc循环。
答案 2 :(得分:0)
好的,感谢所有我只需要在dompdf类中设置memory_limit = 94G,现在它正在创建大型pdf但是几分钟后浏览器显示“连接已重置 - 在页面加载时重置了与服务器的连接。等......“虽然我将执行时间增加到3600秒// ini_set('max_execution_time',3600)
答案 3 :(得分:0)
通过以下代码。根据您的要求更新代码和评论
<?php
echo '<h1>System Configuration</h1>';
echo '<br>';
//PHP SETUP: all time in seconds
//ini_set('max_execution_time', 18000); // set your max execution time that you require for current script
//ini_set('memory_limit',' 2048M'); // set memory limit that you require for current script
//ini_set("max_input_time", '5000');
//ini_set('default_socket_timeout', '5000');
//@set_time_limit(0);
//DATABASE SETUP: all time in seconds
//ini_set('mysql.connect_timeout', '5000');
$ini_path = php_ini_loaded_file();
$ini_max_time = ini_get('max_execution_time');
$ini_memory = ini_get('memory_limit');
?>
<div class="hdr">Current Server</div>
<label>Web Server : </label> <?php echo $_SERVER['SERVER_SOFTWARE']; ?><br/>
<label>Operating System : </label><?php echo PHP_OS ?><br/>
<label>PHP Version : </label><?php echo phpversion(); ?><br/>
<label>PHP INI Path : </label><?php echo empty($ini_path ) ? 'Unable to detect loaded php.ini file' : $ini_path; ?><br/>
<label>PHP SAPI : </label><?php echo php_sapi_name(); ?><br/>
<label>PHP ZIP Archive : </label> <?php echo class_exists('ZipArchive') ? 'Is Installed' : 'Not Installed'; ?> <br/>
<label>PHP max_execution_time:</label> <?php echo $ini_max_time === false ? 'unable to find' : $ini_max_time; ?><br/>
<label>PHP memory_limit : </label> <?php echo empty($ini_memory) ? 'unable to find' : $ini_memory; ?><br/>