4

最初に、私はすでにこれこれ、およびこれを見てきました。

次のエラーを受け取りました。

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);myに入れて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);
?>

誰かが私を助けてくれることを願っています。

解決策: 解決策を見つけました: を追加し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);
?>

php-pageもちろん、私は私のa<a href="<?php echo $page -1; ?>">Previous</a>とaを追加します<a href="<?php echo $page + 1; ?>">Next</a>

助けてくれてありがとう!

4

2 に答える 2

16

使用する必要があります

ini_set("memory_limit",-1);

「memory_set」ではありません。また、これにも注意してください: https://stackoverflow.com/a/5263981/2729140 (Suhosin 拡張機能には独自のメモリ制限設定があります)。

スクリプトに大量のメモリが必要な場合は、スクリプトを修正してみてください。注意すべきことの 1 つは、無制限の SQL クエリです。

テーブルには大量のレコードが含まれる可能性があるため、クエリを常に制限することをお勧めします。テーブルからすべてのレコードをフェッチする必要がある場合は、LIMIT ... OFFSETSQL コンストラクトを使用してページごとに行う必要があります。

于 2013-09-19T08:47:15.227 に答える
0

何度も試みた後、php-pecl-apc がインストールされている場合、php 構成の memory_limit を 48M 以下に減らすことができ、Allowed memory size尽くされたエラーを停止できることがわかりました。

于 2014-06-07T12:18:27.503 に答える