0

以下の解決策を探していましたが、これまでのところうまくいきませんでした。

「機能」という名前のテキスト領域に製品機能のリストがあるページがあります。これは、データベースのテーブルから入力されます。

ボタンをクリックすると、以下のコードが実行されます。コードはリスト内の各単語を取得し、「説明」フィールドにその単語が含まれているかどうかを確認し、含まれている場合はその単語を「機能」と呼ばれるフィールドに入れます。

これは問題なく動作しますが、3,000 の異なる「機能」と 100,000 の製品説明をチェックする必要があるため、実行に時間がかかり、多くの場合タイムアウトします。

これをスピードアップする方法を誰かアドバイスできますか? 基本的にロジックは次のとおりです。

「説明」に「単語」が含まれる場合は、「単語」と入力します

すべての単語を配列に入れることを考えていましたが、配列内のどの単語が「説明」に含まれているかを判断してこの値を返す方法がわかりません。

すべての「機能」はカンマで区切られて desc_lookup テーブルに格納されているため、これらを配列に簡単に追加できます。

$features = explode("\n",$_POST["features"]);
$features = str_replace("\r","",$features);

foreach($features as $feature)
{
    $sql = "UPDATE `".$config_databaseTablePrefix."products` 
           SET features = CONCAT(features, '".$feature.",') WHERE `description` LIKE
           '%".database_safe($feature)."%'";

    database_queryModify($sql,$result);
}

前もって感謝します!クリス

4

1 に答える 1

0

私があなただったら、製品をデータベースに入力するときにこの種のキーワード検索を行い、それらを別のフィールドとして (または別のテーブルに) 保存します。または、キャッシング システムを採用して、毎回すべての製品に対して行う必要がないようにすることもできます。

于 2013-10-03T14:19:59.790 に答える