@pinokio ты опять пытаешься изменить формат хранения данных. Для зачем? Чисто чтоб твой говнокод стал работать? Даже решение с регуляркой тут больше прокатывает, потому что не допустит совпадения неверной подстроки. Если уж ты так хочешь блеснуть стрпозом, то почему ты не добавишь банальные проверки последовательности перевода строки? А, жираф? Да и с циклическим эксплодом ты тоже палку перегнул. В общем рано тебе врываться в треды и постить "решения". Они верные исключительно для тебя, но не рабочие на 95% применительно к оригинальной задаче. --- Добавлено --- И да, ты скопипастил коммент относящийся к конкретному листингу из мануала. А положив его сюда ты лишь дополнил бредом свой говнокод. Зачем? Что мешает думать перед тем как отправлять сообщения?
@Ganzal потому что я работаю с бд. =_= И особо поиска по строке мне ещё не приходилось заморачиваться, но дай мне задачу я решу её на ура, потому что решил куда более серьёзные задачи, скоро ты поймёшь о чём я, буквально недельку погоди ... На счёт explode не знаю... Зато надёжно будет. Мимо не проскочит можно контролировать, каждую строчку, на нём можно и сортировку построить пузырьковую и тд, там в общем много чего можно намутить на самом деле хоть бд свою начать писать но зачем?:
@pinokio ты чушь несешь. А эксплод будет особо радовать людей, которые всё позже и позже регистрируются. Догадываешься почему? Еще раз тебе говорю про твой стрпоз. Идея хорошая, но твоя конкретная реализация - говно. Проконтролируй последовательности конца строки и станет рабочим красивым решением наряду с вычиткой файла в массив и применением регулярных выражений.
96388856 bytes Page generated in 0.132 seconds. PHP: $time= microtime(); $time= explode(' ', $time); $time= $time[1] + $time[0]; $start = $time; $startMemory = memory_get_usage(); $array = array_fill(0, 1000000, 42); echo memory_get_usage() - $startMemory, " bytes\n"; $time= microtime(); $time= explode(' ', $time); $time= $time[1] + $time[0]; $finish = $time; $total_time = round(($finish - $start), 4); echo 'Page generated in '.$total_time.' seconds.'."\n"; exit(); И это блин на 5,6 а на семёрке ещё быстрее будет.... Так что пусть я буду хоть 2 000 000 пользователем думаю я не почую сильно. --- Добавлено --- откроется так словно я первый разница будет не большой --- Добавлено --- думаю в базе тоже идёт перебор по массиву.... Хочешь сказать explode долго получает массив ? А если мне надо будет обо всех данные вывести ? А ещё вообще то есть функции по работе с массивами я вообще то опять на коленке написал ща секу напишу по другому
буратинко, почитай про microtime(); там уже давно добавили входной параметр, для любителей эксплода, типа тебя) ну и про БД почитай, как они работают, а то живешь... незнаешь... что если бы там был тупой перебор, то ими бы никто не пользовался
@runcore вкурсе специально его там на лупил показать что скорость от этого сильно не падает я сейчас мильён записей делаю ща доделаю и докажу что мой метод не фига долго работать не будет. я уверен просто.
Вообще в топку, сижу два часа потратил на создание миллиона так и не создал а потом когда послал свой локальный сервер, обробатывать массив из 50к ключей значений, серв сдох в общем в топку ваше блин тут дебаты ((( --- Добавлено --- Короче не работал не хрена сидел фигнй занимался, есть базы данных: mysql есть постгрес берём пользуемся и забиваем на остальное болт, по крайне мере пока не прежмёт, меня ещё не прижало, как то обхожусь без файловой системы вообще...
@pinokio это наверн PHP: $name = $_POST['name']; $pass = $_POST['pass']; $ud = $name.$pass; $text = file_get_contents('1.txt'); // Необходимо указать полный путь к файлу if ( preg_match( "~(^|[\r\n])".preg_quote($ud, "~")."($|[\r\n])~sD", $text ) ) { echo "YES"; } else { echo "NO'"; } но еще логин/пасс лучше бы разделять
Вот он опыт. Вернее его отсутствие. Я за два часа накатал НЕСКОЛЬКО бенчмарков спецом для тебя. И поехал на дачку. Ща вывод результатов красивый сделаю и покажу.
Кичиться, что ты умнее меня, тебе пользы не принесёт особо и карму тебе явно не подымет... Так что не выделывайся, а лучше научи если есть что сказать, а то как петух выглядишь. P.S (Я не говорю, что ты не говоришь как правильно, просто ты при этом выделываешься мол самый умный, поверь мир велик Так что это как то бессмысленно) Ну если только не почесать своё "великое" ЭГО
pinokio, чувак, ты делаешь полную шняжку, автор просто перепутал функции. К тому-же при большом файле, твой сервак помрет, но для больших файлов нужно делать чтение со смещением и не грузить весь файл целиком, да хотя о чем я говорю, ты далек от этого деревяшечка.
Ночамi Днямi Ты пиши по русски. Это давно уже есть, ты просто введи в поиск " чтение со смещением " и " как правильно обезопасить поток и блокировку ", изучи и попробуй. Или ты на столько уверен, что для тебя родненького буду сидеть и писать качественный и логически структурированный скрипт-код? Не поверишь, я не читал не одной книжки по программированию, я читаю оф доки, там есть больше чем в книжках и всегда вводится новые фитчи и бенчмарки. Просто приучаю себя, чтобы питаться только от оф. источников, сложно но зато без нареканий и никто не говорил, что будет легко.
@rodent90 нет, но ты говоришь что ты можешь, это сделать, а я тебе говорю ты много болтаешь смысл советовать и открывать свой рот, если ты не в состоянии выложить код прямо сейчас.
Кто тебе сказал, что я, тебе что - то должен? У тебя каша в голове, ты посмотри, что ты пишешь. Я тебе четко объяснил и сформулировал решение задачи, я не обязан его писать за-тебя, если у меня нет желания писать скрипт за тебя, а совет дать для того, чтобы ты поумнел, задумался и воспользовался им для изучения и написания скрипта. К тому же, твое фырканье и троллинг - как дикарь залетел в тему и начал в ней срать, - пора банить.
@rodent90 знаешь что ты написал? бред ты написал, если ты считаешь что этого достаточно чтобы чувак который задал здесь вопрос, то ты написал бред. Ты прав не поверю. Ты сам себе веришь то? Мне кажется, ты врёшь сам себе, потом искренне веришь в это, а потом навязываешь это другим. Да ну? А кто тебе сказал что я от тебя что то требую, не чё не попутал ? А я не просил писать за меня скрипт, у меня всё классно работает и без твоей тупой фантазии, я тебе сказал покажи вариант своего решения. На что ты агрессивно среагировал, а значит у тебя нет подобных даже скриптов, значит кто ты? (********) Отгодай ответ под звёздочками. Серьёзно?
@pinokio я написал регистрацию улучшенную PHP: include "kvl.php"; if ( @( strlen($name = trim($_REQUEST['name'])) && strlen($pass = trim($_REQUEST['pass'])) ) ) { $users_au = new \Reader\MemoryKeyValueList( __DIR__ . "/users_au.list" ); $au = $users_au[$name] === $pass; unset($users_au); if ( $au ) { echo "YES\n"; } else { echo "NO\n"; } } // ... регистрация if ( @( strlen($name = trim($_REQUEST['name'])) && strlen($pass = trim($_REQUEST['pass'])) ) ) { $users_au = new \Reader\MemoryKeyValueList( __DIR__ . "/users_au.list" ); if ( !preg_match("~^\w{4,12}$~D", $name) ) { exit(sprintf('Недопустимое имя "%s" пользователя.', $name)); } if ( !preg_match("~^\w{4,12}$~D", $pass) ) { exit(sprintf('Недопустимый пароль "%s" пользователя.', $pass)); } if ( $users_au[$name] !== null ) { exit(sprintf('Пользователь "%s" уже существует.', $name)); } $users_au[$name] = $pass; echo "Успешно."; exit; } else { exit(sprintf('Недопустимый логин или пароль пользователя.')); } --- Добавлено --- для работы надо https://github.com/GloryMind/KeyValueList-emulate
Что загуглить, чтобы посмотреть что это ? Мне интересно не пойму как ты массив получил. Эта функция она дефолтная или же это библиотека подключаемая ?
Но это ппц ужас, для создания авторизация ещё и библиотеку подрубать какую нибудь. Чисто ради иследовательских целей работы можно, но в боевом режими наврятли кто-то авторизацию будет так делать, когда уже есть базы данных.... Ну или если придётся работат ьс файлами как то по крутому, но такое это редко... --- Добавлено --- @Schrodinger через чур как то 1443 строки... Для того чтобы сделать то что уже возможно с помощью php, сомнительное удовольствие.... Не увидел описание библиотеки даже комментариев в ней.