פרטי השיעור
שיעור 3.2: עיבוד קבצים במנות קטנות (Batch Processing)
מה זה Batch Processing? תהליך של עיבוד ויבוא נתונים במנות קטנות, כמו 500 או 1000 שורות בכל פעם, במקום לייבא הכל בבת אחת. זה עוזר למנוע בעיות זיכרון ו-timeout.
היכן לשים את הקוד? הקוד הזה יכול להיות חלק מסקריפט PHP שמייבא נתונים. אתה תחלק את הנתונים למנות ותעבד כל מנה בנפרד.
דוגמה לעיבוד במנות:
// נניח שהשורות שלנו מיובאות בקובץ CSV ונמצאות במערך $rows
$batchSize = 500;
$totalRows = count($rows);
for ($i = 0; $i < $totalRows; $i += $batchSize) {
$batch = array_slice($rows, $i, $batchSize); // חלוקה למנות
$db->beginTransaction(); // פתיחת טרנזקציה
foreach ($batch as $row) {
// יבוא כל שורה מהמנה
$stmt = $db->prepare("INSERT INTO wp_posts (post_title, post_content) VALUES (?, ?)");
$stmt->execute([$row[0], $row[1]]);
}
$db->commit(); // סיום הטרנזקציה
}
-
הסבר טכני:
- טרנזקציה: זהו תהליך שבו כל המנה נכתבת למסד הנתונים יחד, מה שמונע בעיות באמצע.
- array_slice: פונקציה זו מחלקת את מערך השורות למנות קטנות.
מתי להשתמש בעיבוד במנות?
- כאשר אתה מייבא קבצים גדולים ורוצה להימנע משגיאות זיכרון או timeout.
- עיבוד במנות מתאים יותר כשאין לך גישה ישירה למסד הנתונים (לדוגמה, אם אתה מייבא מ-CSV מרוחק).