致命错误:在ini_set之后允许的内存大小为134217728字节(尝试分配3个字节)

Ken*_*nny 4 php memory ini sqlanywhere

起初,我已经看过这个,这个这个.

我收到以下错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 220 bytes)

我正php 5.4和我一起工作sql Anywhere 11.

对此的解决方案是根据是放入ini_set('memory_set',-1);我的php-file,但在这之后我得到另一个错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3 bytes)

编辑:我的代码是

<?php
    ini_set('memory_set',-1);
    $connect = sasql_connect("UID=username;PWD=pass");
    echo "Connection succeed";

    $result = sasql_query($connect, "SELECT * FROM table1, table2");

    if(!$result){
    echo "sasql_query failed";
    return 0;
    } else {
    echo "query completed successfully\n";
    sasql_result_all($result);
    }
    sasql_close($conn);
?>
Run Code Online (Sandbox Code Playgroud)

我希望有一个人可以帮助我.

解决方案:我找到了解决方案:我已经添加了一个WHERE (columnName1 = columnName2),拆分结果并再次运行,相对快速!

<?php
    $connect = sasql_connect("UID=username;PWD=pass");
    if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; };
    $results_page = 100;
    $start_from = ($page-1) * $results_page + 1;    
    $result = sasql_query($connect, "SELECT TOP $results_page START AT $start  * 
                    FROM table1, table2 WHERE (columnName1 = columnName2)");

    if(!$result){
    echo "sasql_query failed";
    return 0;
    } else {
    echo "query completed successfully\n";
    sasql_result_all($result);
    }
    sasql_close($conn);
?>
Run Code Online (Sandbox Code Playgroud)

当然,我加入了我的php-pagea <a href="<?php echo $page -1; ?>">Previous</a>和a<a href="<?php echo $page + 1; ?>">Next</a>

感谢大家的帮助!

sp-*_*and 15

你应该用

ini_set("memory_limit",-1);
Run Code Online (Sandbox Code Playgroud)

而不是"memory_set".此外,请注意:https://stackoverflow.com/a/5263981/2729140(Suhosin扩展具有自己的内存限制设置).

如果你的脚本需要大量内存,那么你应该尝试修改它.有一点需要注意的是无限的SQL查询.

您的表可以有很多记录,因此始终限制查询是明智的.如果您需要从表中获取所有记录,那么您应该使用LIMIT ... OFFSETSQL构造按页进行.