Trol

Рейтинг
82
Регистрация
28.06.2007

Спасибо. Но не уточнил что текстовый файл очень большой, больше 50млн. строк в нём.

Структура таблицы:

id (INT) - auto_increment

text (varchar)

В phpmyadmin никак нельзя импортировать такой файл в "столбец" text?

master_jeday:
Почему продаешь курицу…?

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

Поясните пожалуйста подробнее. Значит у вас больше трафика не получается, а у нового человека получится?

Сколько времени нужно уделять теме? Сколько трафика удаётся добывать с 5000руб? Тема трафика может быть любой?

Покажите пожалуйста пример дорвея. Софт десктопный или серверный? Под любую тематику подойдёт?

Joker-jar, спасибо.

А можно сделать чтобы пока 5 раз замены не произойдёт, функция не переставала работать?

Т.е. чтобы именно 5 раз rand(0,1) выдал 1.

Чтобы 5 замен в тексте было и функция завершила работу?

Может можно единицу сохранять в переменную и пока переменная меньше 5 выполнять функцию?

Всем спасибо за внимание к проблеме.

Оказывается действительно в коде дело.

Вставил такую функцию:

function getmicrotime() 

{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}

Раскидал по коду в разных частях

echo "<br>".getmicrotime();

И выявил 2 функции, которые очень тормозили процесс, переписал их и сейчас скорость вполне приличная :)

pavel_j:
Попробуйте немного поменять алгоритм работы этого рерайтера (если не ошибаюсь). В цикле формируйте один (2-3, но не 1000) файл, а вне цикла его уже пишите на диск.

т.е. записывать сначало данные в массив, а потом из массива в файлы? Всёравно циклом вытаскивать элементы с массива придётся :(

n0name:
Пожалуйста :)
Прирост скорости в несколько раз должен быть. Или вам больше нужно?

да хотябы раз в 5-10 поднять, сейчас в моём варианте 1000 файлов генерируется за 5 минут :(

вариант LEOnidUKG хорош, но не понятна реализация :( сейчас вот хочу попробовать подобную функцию написать чтобы на входе получала путь (куда сохранять файл) и содержимое. Копаю курл.

LEOnidUKG, а если file_put_contents в одном цикле около 7ми, не будут они конфликтовать или например ошибки с записью файлов возможны? Если бот не закончит запись, а тут ему ещё один GET запрос прилетает? :)

Unsiker, спасибо! Код для примера привёл, т.е. так то сохраняются файлы разные, я то изначально и решил что вся проблема в str_replace, так как именно эта функция преобладала в моём коде, но оказывается вот как всё повернулось :)

n0name:
Если скорость записи так критична, то смотрите в сторону SSD.

Почитал по ним, прирост совсем не существенный для такого заморачивания :( Но расширил кругозор, спасибо :)

netwind:
Вооооот. Они прежде чем предпринять действия это время замеряли. А ты ?

Ага, ошибся, хорошо люди умные поправили, а то я уже php5-fss смотрел, а оно и не помогло бы даже :(

netwind:
Если это все сделано ради генерации текстов, попробуй ramdrive настроить у себя и обрабатывать тексты крупными порциями на этом диске.

То, что обрабатывается подхватывается 1 раз, т.е. в скрипте в основном запись на диск идёт, спасибо почитаю подробнее по ramdrive

Counselor:
Хранить данные на физическом файле - принципиально? Почему бы не сделать обработку запроса пхп скриптом и выборку из бд?

спасибо, о такой возможности знаю, но нужно именно создание файлов :(

LEOnidUKG:
Предлагаю просто распаралеллить запись и всё.
Пусть будет 10 ботов и писать по 100 записей, $i можно им по GET передавать.

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

blogolet:
Сколько файлов в папке куда идет запись? Если более 1000 то настоятельно рекомендуется разбить на подпапки с меньшим колвом файлов. Увеличить кеш файловой системы. Но скорее всего проблема в плохих алгоритмах - а это требуетпересмотр концепций и советов там никто не даст

Спасибо, деление как раз так и продумано что по завершению работы скрипта в каждой папке не более 1000 файлов

Спасибо вам, сейчас закомментировал все str_replace, посмотрел, и действительно всё время уходит на запись :( str_replace занимает всего доли секунд.

Может подскажите возможно ли ускорить процесс записи в файл? Может есть какие расширения для этого? Или может с FAT32 PHP намного быстрее работает? Я уже и eAccelerator и Zend ставил, не помогает.

Dreammaker, тогда придётся импортировать текстовый файл 300мб-2Гб в базу, что неудобно.

GizmoKoenig, спасибо огромное, работает быстрее.

Joker-jar, огромное спасибо за помощь, тоже работает быстро, базу в 2 миллиона обрабатывает за минуту :)

Спасибо всем за помощь!

Всего: 233