Вопрос:
Как реализовать переменную общей памяти в PHP без пакета семафора (http://php.net/manual/en/function.shm-get-var.php)?
Context
- У меня есть простое веб-приложение (на самом деле плагин для WordPress)
- , которое получает URL
- , затем проверяет базу данных, если этот URL уже существует
- если нет, то он отключается и выполняет некоторые операции
- , а затем записывает запись в базу данных с URL-адресом в качестве уникальной записи
В действительности происходит то, что4,5,6 ... сеансов одновременно запрашивают URL, и я получаю до 9 повторяющихся записей в базе данных URL .. (возможно, 9, потому что время обработки и запись в базу данных первой записи занимает достаточно временичтобы пропустить 9 других запросов). После этого все запросы читают правильную запись о том, что запись уже существует, и это хорошо.
Поскольку это плагин WordPress, на всех видах общего хостинга будет много пользователей.участок землиформы с переменными компиляциями / настройками PHP.
Так что я ищу более общее решение.Я не могу использовать запись в базу данных или текстовый файл, так как они будут слишком медленными.пока я пишу в базу данных, следующий сеанс уже пройден.
fyi: код базы данных: http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/plugins/metadata_favicon/inc/class-favicon.php
update
Использованиеуникальный ключ на новом хэше URI md5 вместе с ловит попытки, кажется, работает.
Я нашел 1 дубликат записи с
SELECT uri, COUNT( uri ) AS NumOccurrences
FROM edl40_21_wpfavicons_1
GROUP BY uri
HAVING (
COUNT( uri ) >1
)
LIMIT 0 , 30
Так что я думал, что это не сработало, но этопотому что они были:
http://en.wikipedia.org/wiki/Book_of_the_dead
http://en.wikipedia.org/wiki/Book_of_the_Dead
(столицами усмехается)