За последние 24 часа нас посетили 30500 программистов и 1791 робот. Сейчас ищут 1169 программистов ...

auto_increment в php скрипте =)

Тема в разделе "PHP для новичков", создана пользователем siiXth, 26 авг 2010.

  1. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    И так в продолжении своих войн с пхп без наличия бд я задался вопросом 8D :
    Предположим мы хотим регистрировать юзеров и каждому юзеру конечно же нужен отдельный id , представим что мы создали отдельный пхп файл который инклудится в рег и в котором стоит тупо кол-во уже зарегенных.
    Как это происходит - юзер нажимает кнопочку "отправить" , идут всякие проверочки , инклудится наш файл с кол-вом зареганных , к тому числу прибавляется 1 и создаётся файл с данными юзера.
    Всё это разумеется так же просто как и на словах , но меня смущает тот факт что , к примеру , одовременно зарегаются 100 юзеров и к каждому приинклудится файл с кол-вом юзеров , каждый его перезапишет и каждый создаст файл с профайлом юзера и лично по моим догадкам при 100 юзерах вполне возможно такое что нескольким юзерам присвоится 1 и тот же id и перезапишет профайл другого. Это возможно ?
     
  2. wiiio

    wiiio Активный пользователь

    С нами с:
    24 авг 2010
    Сообщения:
    18
    Симпатии:
    0
    Я тут вижу несколько вариантов решения, но сам не юзал, использую базы данных, это куда быстрее)

    1. акамулировать все в какую нить папку временную, в последствии скриптом на сервере проходицца по папке и добавлять из этой папки файлики в твой файл.. так ты будешь в ручную контролировать момент создания пользователя, вместо того чтобы предоставлять все на волю скриптам..

    2. Делать пхп демон, который будет обрабатывать твои запросы на регистрацию поочереди, используя буфер.

    3. Можешь использовать какие нить мпд5 хэше меток времени + рандомное число огромное + ip адрес пользователя :) что нить такое, что отвечает уникальности в достаточно большой степени.. и чем больше таких параметров, тем выше вероятность несовпадений)))

    Но лучше использовать бд конечно))
     
  3. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
  4. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    vasa_c , это всё хорошо , но с флоком не будет клонов с одинаковым айди ?
     
  5. wiiio

    wiiio Активный пользователь

    С нами с:
    24 авг 2010
    Сообщения:
    18
    Симпатии:
    0
    http://kurepin.ru/php/zametki/flock/
    запись будет идти последовательно. скрипт будет открывать файл, блокировать от записи другими и только после этого продолжать работу с файлом.. а по завершению закрывать. тем самым другие копии скрипта буду ждать очередь на запись и не смогут дописать новый id
     
  6. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    wiiio , благодарю , с первого раза почему-то несовсем понял разницу между ним и fopen
     
  7. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    да и ещё , с флоком теперь всё понятно и просто. если я буду его ещё и походу инклудить например на главную "у нас зарегестрированно 100500" польщователей флок не будет мешать инклуду ?
     
  8. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ты понимаешь разницу между include и flock? Походу нет.
     
  9. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    мде
    написано что блокирует файл от посторонних программ и потому во время флока ничто неможет начать с ним работать , теперь понятно к чему мой вопрос ?
     
  10. wiiio

    wiiio Активный пользователь

    С нами с:
    24 авг 2010
    Сообщения:
    18
    Симпатии:
    0
    вообще include будет производить такую же попытку чтения файла и просто ругнется что досутп к файлу закрыт.. тут нужно использовать fopen. но локать не надо.

    когда ты локаешь файл на запись, другие программы не могут получить доступ к файлу также как и любая попытка скрипта к доступу на файл.

    думаю при частых запросах будут задержки сильные.
     
  11. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ещё одно подтверждение, что ты не понимаешь разницу между вызовом анализатора и обычным чтением.
    А что он читать не может - дело последнее.
     
  12. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ещё одно подтверждение того что во время флока не будет работать инклуд , тоесть мои подозрения вполне обоснованы :(
    можно было не выёживаться , а написать "да" , вместо необоснованного "ты не понимаешь разницу" :(

    тогда при реге айди будут переписываться
     
  13. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Но ведь не понимаешь же, а.
     
  14. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    боже , что тут не понимать ? у вас 100500 постов на этом форуме , а вы не понимаете как может не работать инклуд при заблокированном файле , как же вам не стыдно , ай-я-яй. выход справа-сверху
     
  15. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    siiXth
    Ты не понимаешь разницу между инклудом текстового файла и его чтением, а понтов хоть отбавляй. Сходи почитай мануал и тихонько угомонись. Блокировка файла и разница в способах загрузки - не одно и то же.
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    во вы сопли развели.

    а ведь правильный ответ лежит вобще в другой плоскости.
     
  17. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    вы вот сейчас в кэпа играете ?

    вы только что написали 757 символов потратив своё время вместо максимум 10 символов дав ответ на вопрос
    думаю теперь ясно у кого
    удачи в повествовании ртфм

    будьте так любезны...
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    буду, блин. =) ЮЗАТЬ БД

    Без обид, но делать автоинкремент на файле не сложно, но ужасно ТУПО так поступать. просто позорно.

    Тем не менее, флок будет краеугольным камнем при реализации на файлах.
     
  19. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    да разумеется это понятно что БД!!! :D я не отношусь к тем юзерам которые хотят работать без бд только из-за того что не умеют или это "сложно" 8) просто люблю поэксперементировать и хотелось бы реализовать данный сабж таким каким его задумал.
    ну а теперь действительно возможно глупый вопрос , у меня раньше был сайт на виртуальном хосте на одном движке и при определённом кол-ве юзеров онлайн он ужастно тормозил. и тогда я оптимизировал его заменив определённую часть запросов на пхп файлы которые инклудились и переписывались (например новости и комментарии к ним сохраняемые в одном или нескольких пхп файлах) и так сайт смог держать юзеров без тормозов то кол-во которое держал с тормозами раньше. и так я придумал сделать полностью динамический сайт без бд. да и в то время про ддос почитал и как я понимаю , сайту без бд как-то побоку на ддос. вопрос в том что либо я выбрал неудачного хостера , либо вирт хостинги не держат большой онлайн ?
     
  20. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Все какие-то самонадеянные, слова им не скажи.
    Релизация AI в том же MySQL более сложна. Индекс первичного ключа с автоинкрементом (как и другие индексы) хранится отдельно и обрабатывается совместно с запросом. В случае с РНР тут получается что-то наподобии залоченой таблицы или жалкого подобия транзакции: если уж не удалось обновить запись в файле, то не запишем и данные (двухшаговое действие). В MySQL у нас есть LOW_PRIORITY вставка, именно таким образом должна происходить обработка. Сбор данных по индексам и записям - неправильно и БД это знают. Значение AI обычно никогда не равно количеству записей. Сбор этих данных должен происходить во время вставки отдельным процессом, независимым и неожидаемым. flock — не панацея.
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    siiXth
    ну есть всякие другие технологии. например докупить оперативки =) и пихать в нее всякие промежуточные результаты, готовые страницы и прочую хрень, чтобы не дергать из бд. И так далее. Короче, можно на файлах, можно. Но всякие регистрации и тп лучше на бд.
     
  22. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ну регу я уже сделал добавляющую в бд только логин и id , пароль и все остальные данные сохраняю в файл который инклудится при залогинивании для проверки пароля(тут 1 запрос в бд) и при просмотре профиля(без запросов в бд). Думаю это как-никак выглядит валидно и данный метод сэкономит немного средств в остальном. В общем - спасибо за ответы.
     
  23. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    siiXth
    А сколько примерно юзеров онлайн сидело, когда сайт начинал тормозить? Мне кажется, всё-таки хостинг худой... Хотя если сайт был суперпосещаемым..?..
    А вообще, если любишь эксперементировать - покупай (если нет) постоянный реальный ip у провайдера, регистрируй на него доменное имя и будет у тебя свой выделенный сервер дома...
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    siiXth
    у тебя фобия перегрузить бд. Профиль тоже можно сделать на БД. Профили редактируются и просматриваются очень редко. Хотя если конечно посещаемость и тп - можно прибегнуть к кэширующим фишкам. Но опять же, это не через инклуд делается, просто потому что есть более удобные для управления механизмы. но через инклуд конечно забавно, быстро и геморно править наверное.
     
  25. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    непомню :(

    сайты бывают разные :) те же соц.сети , что лучше - когда 10к юзеров одновременно зашарятся у друг-друга по профилям запрашивая как минимум по 1 запросу или каждому поинклудится 10к профилей :) тем более что кроме профилей есть и другие ф-ции.