增加内存限制

时间:2012-01-12 04:40:55

标签: php mysql

我的PHP脚本在飞行中创建PDF,数据来自mysql数据库表,它工作正常,直到30条记录,但比它说的更多

我来自http://code.google.com/p/dompdf/

的dompdf
Fatal 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表包含数百条记录会发生什么?

4 个答案:

答案 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/>