Вам нужно не только беспокоиться о столкновении двух пользователей, но и о столкновении одного пользователя с самим собой по нескольким запросам.
Чтобы попытаться форсировать один запрос на действие шрифта для пользователя, вы можете создать pid-файлы (но с использованием идентификатора пользователя вместо идентификатора процесса) или создать очередь запросов (например, в таблице базы данных) и иметь демон периодически проверяет эту очередь (устанавливая для столбца working
значение 1
) запросы определенного пользователя. Сопоставьте это с уникальными временными рабочими каталогами для пользователя, и столкновения будут маловероятными.
Любой подход может застрять (процесс завершается до того, как он сможет очистить механизм). С этим можно бороться, если демон-процесс сбросит флажки working
при перезапуске.
Если вы не беспокоитесь об одновременных запросах (через политику) и просто хотите избежать коллизий, вы можете отказаться от любых демонов и попросить ваш скрипт PHP скопировать файлы шрифтов во вновь созданную папку с уникальным именем для каждого запроса , затем скопируйте полученный шрифт из него по завершении.