2011-07-17 10 views
2

私は自分の仕事で「継承」したWebサイトで作業していますが、現在はPHP/HTML/CSS/JSを使用していますが、ロードするにはAGESがかかります。しかし、私はPHPであまり経験はありませんので、どこを速く動かすべきかは正確には分かりません。私はすべてをプリロードするには、このコードを持っているページの最上部にまず:さらにテーブルダウンその後私は負荷で作業しているウェブサイトをより速くすることができますか?

​​

私はちょうどテーブル以来、正確にどのように知りません良く得ることができます知っている(このコードを使用して作られますデシベルに無関係であるように見える、彼らは特にデシベルに触れないように私に尋ねた

<? 
     $count = 0; 
     foreach ($domains as $row){ 
      $count++; 
    ?> 

HTMLの少しは、(主にテーブルの行)との間にここに行く:。

<? 
    } ?> 

約2日後、私は自分のhtml/css/jsが最適化されていることを知っていますが、phpは約5〜10秒間待ちます。私を助けてくれますか?私はそう=/

+1

5~10秒間のデータベースの寄与を測定しましたか?私はこのコードが5〜10秒連続して実行されるとは信じられないので、あなたがDBを待っていると信じています。それが改善を探し始める必要があります。 – fvu

+3

私の意見では、$ contentdb = new wpdb( "$ user"、 "$ pass"、 "$ db"、 "$ ip");は** foreach **ステートメントの前でなければなりません。 。 – Karolis

+0

@karolis良いキャッチ! – fvu

答えて

1

まず操作を行う場合は、foreachループに書き込みクエリを停止することによって開始する必要があり、foreachループから外部接続の一部を取ったが、私はエラーを取得しようとした

EDIT

LIKEステートメントを使用するクエリを削除します。

次に、指定されたテーブルのインデックスを再確認する必要があります。経験則では、WHEREGROUP BY句に表示されるすべての行にインデックスを付ける必要があります(例外はありますが、大文字と小文字の区別は可能です)。

switchステートメントを取り除き、配列検索で置き換えることができます。

です。私は2セントです。

+0

の質問がありません。同じ効果がありますか? WHEREとGROUP BYに表示されているすべての行をチェックしていると言いましたか?また、foreachループでクエリを取り除くには、すべての値を含む配列を作成すれば十分でしょうか?何をお勧めしますか? – Tsundoku

+0

最初のステップは、それを 'MATCH .. AGAINST'と置き換え、実際にどのようなルックアップがあるかを調べることです(単純な' VARCHAR'カラムで効果を模倣することができます)。またはコンマ区切りの値である可能性があります)。 'WHERE/GROUP BY'節に関して、私はあなたがそれらの中で使われている行がある形式か別の形で索引付けされていることを確認するべきであることを意味しました。 –

+0

これで、foreachループから接続($ contentdb = new wpdb( "$ user"、 "$ pass"、 "$ db"、 "$ ip");)を取ると、 (つまり、私はそれを外に置いています)接続が利用できないというエラーが表示されます。なぜこうなった? – Tsundoku

3

xhprofまたはxdebug + kcachegrindのようなプロファイラを使用して、長い時間がかかる(またはあまりにも頻繁に実行される)コードの場所を見つけて最適化します。

関連する問題