www.php.net/manual/ru/function.file-get-contents.php в функции file_get_contents есть параметр context, используя который можно отправлять из php пост-запросы. В документации и в гугле есть примеры.
Это не единственный способ, можно еще curl заюзать например.
Попробуйте линуксовую команду find. Если этого будет недостаточно (по скорости или качеству), то проиндексируйте Sphinx-ом.
Из php удобно работать и с тем и с другим.
Хотя в вашем случае даже Short Polling наверное подойдет, без всяких там Comet. То есть вы загружаете фотки и все. На сервере они отдельно обрабатываются в фоне (для этого можно использовать менеджер очередей, либо просто в бд складываете задачи и скриптом, запускаемым по расписанию, их разгребаете). Когда обработка фоток закончится - сообщаете об этом базе данных.
В это время браузер периодически будет аяксом у сервера спрашивать - закончилась ли обработка
Я как-то вложенными запросами "убивал" mysql, если вложенный запрос зависит от внешнего и всегда возвращает огромное количество кортежей. Одним запросом одно ядро CPU загружалось у меня на несколько минут на 100%.
Что примечательно, на постгресе аналогичный запрос выполнялся достаточно быстро и без особых проблем....
1. В качестве ключа memcached можно использовать конкатенацию key1 и key2.
2. Вы уверены что вам нужен memcached? Выборка по ключу из таблицы в 10млн в MySQL не занимает много времени. Если составной индекс по key1+key2 есть.
Например: FTP или NFS или через HTTP-запрос (т.е. вы заливаете файл в админку, а в коде админки делаете еще один запрос через file_get_contents и stream_context или curl, в котором заливаете файл на другую машину с сайтом, на сайте его принимаете и сохраняете куда надо).
Я бы выбрал FTP или HTTP.
То, что в phpmyadmin для таблиц стоит кодировка utf-8 это еще не значит, что там внутри действительно utf-8. Я когда-то в подобной ситуации делал дамп базы, конвертил его в utf-8 и вливал обратно.
Web socket очень похож на HTTP же, специальные заголовки (Upgrade там всякие) надо передать только. Готовой либы для PHP не знаю, если не найдете, то можно самому на сырых tcp-сокетах сделать. Информации о протоколу достаточно много даже на русскоязычной википедии ru.wikipedia.org/wiki/WebSocket
1. Для хранения сессии можно использовать не только файлы, но и хранилища, поддерживающие многопоточность (memcached, redis, реляционные бд,....).
2. Даже если используете файлы, что мешает вам вызвать session_write_close перед тем, как запускать curl?
Если уверены, что кэшируется не на клиенте, попробуйте сначала nginx перезагрузить, потом php-fpm и посмотреть, сбросится ли этот загадочный кэш после одной из перезагрузок. Так хоть понятнее будет, в каком именно направлении копать.
Используем для таких же целей mod_auth_ntlm_winbind на линуксовых серваках. В последних дебиане и убунте есть в репах даже, если не ошибаюсь. Работает хорошо, довольны. Единственный минус - если перед апачем стоит прокся, например nginx, то работать не будет, приходится ntlm-запросы напрямую апачу слать.