0

したがって、ブラウザから直接実行するphpスクリプトがあり、2つのエラーが発生します。

警告: mysql_fetch_object(): 指定された引数は有効な MySQL 結果リソースではありません...
警告: mysql_num_rows() は、パラメーター 1 がリソースであると想定しています。

このスクリプトでは、ブログ テーブルからすべてのブログを選択するクエリを作成します。

$result = $this->query("
     SELECT *
     FROM blogs
");

そして、私は彼らのフィードを取得します! したがって、このスクリプトの実行には 40 秒など、少し時間がかかります。私のテーブルには 100 個のブログがあり、スクリプトを実行するたびに 2 つのエラーが発生します。

知っておくべき重要事項: このようにクエリを変更した場合、これらのエラーは発生しません:

$result = $this->query("
     SELECT *
     FROM blogs
     LIMIT 0,70
");

したがって、システム管理者の設定に関係していると確信しています。共有ホストを使用しています。そのため、100 個のブログすべてに対して操作を行うとエラーが発生し、70 個のブログのみを使用するとエラーが発生します。

mysql接続か何かを失ったようなものです。クエリは間違っていません。画面に印刷してphpmyadminでチェックしたところ、動作しました。

エラーの1つはここから来ます:

$result = $this->query("
    SELECT *
    FROM blogs_settings
");

$settings = $this->fetch_object($result);

return $settings->max_feeds;

この関数は、最大フィード/ページを取得するために使用され、そのエラーが発生しますが、関数には何も問題はありません。max_execution_time を 120 に設定しましたが、他に何ができるかわかりません。

多くの人がこのエラーに遭遇したと確信しており、誰かが問題を知っている、または何が問題なのかを推測している場合、私だけではないと確信しています.

4

1 に答える 1

0

$result = $this->query(" SELECT * FROM blogs ");機能しないが正常に動作するという事実$result = $this->query(" SELECT * FROM blogs LIMIT 0,70 ");と、他のコメントを考慮して、許可されている最大メモリも調べましたか?

頭に浮かぶもう 1 つのこと (おそらく最初に頭に浮かんだこと) はselect * from blogs、数百のレコードがある場合、a が戻ってくるのに 40 秒もかからないということです。あなたが持っているこれらのブログはどれくらい大きいですか?

編集:

今、私たちはあなたのコメントに基づいてどこかに到達していると思います

*最初のクエリでエラーが発生しません。すべてのフィードを取得したら、それらをオブジェクトの配列に保持します。その後、別のクエリを作成して、ホームページに表示されるフィードの数を取得します。その数をテーブル blogs_settings に保持します。そして、そのクエリでエラーが発生します*

すべてのデータベース接続を行っているオブジェクトで、接続を再利用していますか、それとも毎回新しい接続を開いていますか? その場合、データベースへの接続を適切に解放していますか?

于 2012-07-20T08:00:55.500 に答える