Я думаю, что вы неправильно используете термин "потокобезопасный". Потоковая безопасность - это (в основном) разделение ресурсов в поточном коде. В PHP нет потоков, а файловые дескрипторы не являются общими ресурсами. Файлы являются общими ресурсами, хотя. Я думаю, что вы ищете термин " условие гонки " вместо этого.
Что, если столкновение произойдет после того, как я fopen()
файл, но до того, как я flock()
это?
То же самое произойдет, если вы не используете SPLFileObject. Просто убедитесь, что вы никогда не открываете + усекаете, всегда открываете + добавляете и затем усекаете, как только у вас есть блокировка. Это должна быть стандартная процедура, если вы уже знаете, как работают условия открытия и блокировки файла.