0

これが私の問題です。42,000 の SKU レコードを含む CSV ファイルがありますが、最初の数件と最後の約 3000 件だけを処理する必要があり、残りのレコードは重要ではなく、スキップする必要があります。一度に 15 レコードを処理するために array_slice を使用していますが、ファイルの途中にある約 39,000 レコードを 15 のブロックで処理せずにスキップする良い方法がわかりません。テキストCNVを含めて処理したくないので、このifステートメントを使用してそれらをスキップし、制限を100ずつ増やして、重要でないすべてのSKUをすばやく取得しようとしました.

        foreach($import_data as $row_id => $row) {
    if(preg_match('/CNV/',$new_post_meta['_sku'])) {
        $limit = ($limit +100); 
        continue;
    } else {
        $limit = 15; //Set limit back to 15
        //Process each SKU here

このようにする問題は、最終的に 39,000 個の重要でない SKU を通過したときに制限が約 1500 に設定され、新しいオフセットが ($limit + $offset) に設定されているため、処理する必要がある最初の 1500 個の SKU をスキップすることです。 . 39,000 の SKU を小さなチャンクで処理せずに効果的に処理するための推奨事項はありますか?

この制限は、次のように各 array_slice の長さを設定するために使用されます。

$import_data = array_slice($import_data, $offset , ($limit > 0 ? $limit : null), true);
4

1 に答える 1