Как реализовать многопоточность?
Открываем файл и устанавливаем эксклюзивный лок. Когда один скрипт работает с этим файлом, другому при попытке открыть его будет выдаваться ошибка. Суть в том что делаем бесконечный цикл, если выдается ошибка, то пытаемся открыть снова пока не сможем открыть. Только желательно ставить не бесконечное время жизни скрипта. set_time_limit ( сек);while(true){
if ($fh = fopen($file, 'r+')) {
    echo "File opened successful\n";
    if (flock($fh, LOCK_EX)) {
        echo "Successfully locked filed with exclusive lock\n";
        flock($fh, LOCK_UN);
    } else {
         fclose($fh);
       continue;
    }
    fclose($fh);
   break;
} 
}
Куда нибудь сохраняй состояние запущенности скрипта и в самом скрипте проверяй статус