Неблокирующие именованные каналы

Краткое изложение проблемы: мне удалось ускорить просмотр изображений при загрузке значительно отличается от того, что было раньше, за счет использования параллелизма.Теперь мне нужно защитить этот параллелизм от состояния гонки. Я собирался заставить зависимый сценарий опросить обычные файлы на предмет статуса независимого, но потом решил, что именованные каналы будут лучше. Каналы, чтобы избежать опроса и названы, потому что я не могу получить PID из скрипта, который их открывает (это тот, который мне нужно использовать для разговора по каналам).

Итак, когда изображение загружается, клиент отправляет POST через AJAX в сценарий, который 1) сохраняет изображение 2) порождает параллельный сценарий (независимый) для просмотра изображения и 3) возвращает клиенту JSON об изображении. Затем клиент немедленно запрашивает заполненную версию, которую мы, надеюсь, успели подготовить, пока отправлялся ответ. Но если он не готов, Apache mod_rewrites путь, чтобы указать на второй сценарий (зависимый), который ожидает завершения пролистывания и затем возвращает данные изображения.

Я ожидал, что это будет довольно просто, но, тестируя только независимый сценарий через терминал, я получил следующее:

$ php -f thumb.php -- img=3g1pad.jpg
successSegmentation fault

Источник здесь: http://codepad.org/JP9wkuba I подозреваю, что я получаю segfault, потому что тот фифо, который я сделал, все еще открыт и теперь осиротел. Но он нужен мне, чтобы зависимый скрипт увидел, верно? И разве это не должно быть неблокирующим? Я полагаю, это потому, что остальная часть скрипта может работать .... но не может закончиться? Это будет работа для обычного файла, как я думал в начале, за исключением случаев, когда оба открыты, я не хочу опрашивать. Я хочу проголосовать максимум один раз и покончить с этим. Мне просто нужно опросить и игнорировать безобразие?

7
задан hakre 12 October 2012 в 09:22
поделиться