$arr = [1, 8, 12, 15, 6, 19, 56, 78, 43, 1, 5, 7, 4, 23, 6, 76, 4, 15, 1, 8, 12, 15, 6, 19, 56, 78, 43, 1, 5, 7, 4, 23, 6, 76, 4, 15, 1, 8, 12, 15, 6, 19, 56, 78, 43, 1, 5, 7, 4, 23, 6, 76, 4, 15];
foreach (array_chunk($arr, 3) as $values) {
    vprintf("%2d %2d %2d<br/>", $values);
}      -rwxr-xr-x 1 user user  452 Июн  7  2014 applypatch-msg.sample
-rwxr-xr-x 1 user user  896 Июн  7  2014 commit-msg.sample
-rwxr-xr-x 1 user user  189 Июн  7  2014 post-update.sample
-rwxr-xr-x 1 user user  398 Июн  7  2014 pre-applypatch.sample
-rwxr-xr-x 1 user user 1642 Июн  7  2014 pre-commit.sample
-rwxr-xr-x 1 user user 1239 Июн  7  2014 prepare-commit-msg.sample
-rwxr-xr-x 1 user user 1352 Июн  7  2014 pre-push.sample
-rwxr-xr-x 1 user user 4898 Июн  7  2014 pre-rebase.sample
-rwxr-xr-x 1 user user 3611 Июн  7  2014 update.samplephp doit.php. Полный список хуков и условия их вызова тут      Сразу оговорюсь - открывать ресурсы в дочерних процессах не вариант.
INSERT INTO main (`id`, `nazv`, `text`, `user_id`)
    VALUES (9, '{$nazv}', '{$text}', '{$user_id}')
    ON DUPLICATE KEY UPDATE 
        `text`=VALUES(`text`),
        `nazv`=VALUES(`nazv`),
        `user_id`=VALUES(`user_id`);