Именно так. Рекомендация нулёвая.
Самый простой метод: сделать через сессии. При обращении к 1.php создаётся сессия, кук с её идентификатором попадает в браузер, где выполняется ajax-запрос. Вместе с этим запросом в 2.php уходит кук с айди открытой сессии. В 2.php необходимо сделать проверку на существование сессионного кука, на существование этой сессии и только тогда отдавать XML. Т.о. мы получаем _обязательную_ необходимость посещения 1.php перед тем как получить данные из 2.php.
Скажу честно, такую защиту я поломаю с помощью Curl примерно минут за 10. Но не зная методики защиты, для большинства это будет проблемой. Так что, лучше так, чем вообще никак. :)
Дальше уже можно навернуть ещё что-то сверху этого метода. Для начала, думаю, и этого хватит.
Santyago добавил 12.02.2010 в 18:24
Т.е. один ключик для всех? Смотришь исходник в браузере, копируешь ключик и используешь сколько влезет?
ППЦ... Ну точно тролль...
Apache::Session - A persistence framework for session data
Apache::Session is a persistence framework which is particularly useful for tracking session data between httpd requests. Apache::Session is designed to work with Apache and mod_perl, but it should work under CGI and other web servers, and it also works outside of a web server altogether.
_it also works outside of a web server altogether_
Перевести?
CGI::Session - persistent session data in CGI applications
CGI-Session is a Perl5 library that provides an easy, reliable and modular session management system across HTTP requests. Persistency is a key feature for such applications as shopping carts, login/authentication routines, and application that need to carry data accross HTTP requests. CGI::Session does that and many more
Всё. Это мой последний пост в данном топике в виду полной неадекватности главного оппонента.
Best regards!
Утверждение о том, что "сервак ложиться по переполнению памяти" из-за использования memcached - это полная некомпетентность и "сказать абы что сказать".
Феерическая некомпетентность. Не позортесь, молодой человек.
Вам знакомо устоявшееся в узких кругах выражение "PHP engine"? Ну, да... Вы же не "пыхом не занимаетесь"... Тогда может хватить позориться или очень хочется поспорить?
При чём тут Апач? Сессии организовываются движком PHP. Никаких событий на эту тему этот движок не генерирует. Перед тем как посоветовать очередную глупость, неплохо было бы хоть чуть-чуть в теме разбираться.
Ничего личного, но это очередная глупость.
PHP надо собрать с ключём --with-iconv
Варианты:
1. INSERT DELAYED в помощь в случае использования MyISAM
2. Использование InnoDB
Транзакции тут ни при чём. Проблема в уровне изоляции и умении движка делать row-lock.
Грамотно это делается через memcached. Заводится шаред массив с активными сессиями пользователей. Дальше начинаются вариации в зависимости от постановки задачи.
Santyago добавил 12.02.2010 в 12:57
А ещё, говорят, бывают велосипеды с квадратными колёсами...
Как раз такой джоин при нормально построенных индексах будет эффективнее, чем подзапрос на каждую запись из таблицы постов (к тому же ещё и с группировкой). Ход мысли в исходном запросе я, честного говоря, вообще не понял. Дикость какая-то.
ЗЫ. Миллионах на 10 записях скорее всего загнётся. :) Там временная таблица будет строиться вечность.
А Вы пробовали?
А что? Не работает? :D
DELETE wp1 FROM wp_posts wp1
INNER JOIN wp_posts wp2
WHERE wp1.post_title=wp2.post_title AND wp1.id > wp2.id