Lotus Petal
Новичок
Приветствую дамы и господа.
Я прошу у вас помощи или совета в достаточно очевидном, для многих, вопросе. Просто эти многие говорят, что это не возможно в принципе из-за огромного объема данных, но я знаю маленький секрет программистов - в программировании возможно все. Ну по крайней мере так мне говорил мой первый учитель.
Небольшое отступление. Я новичок в программировании, но любознательность заставляет меня браться за разного рода задачи и однажды у меня вышел спор с коллегой сисадмином, в котором он пока выходит победителем. Я не против если это будет так, я просто хочу знать, что в программировании реально есть слово "невозможно" и сейчас выясняю эту ситуацию для себя.
Теперь собственно сам вопрос. Коллега сисадмин сказал, что в современных реалиях с помощью php кода на стандартных серверах невозможно обрабатывать огромное количество данных, но он мало знает о различных способах оптимизации кода ( в принципе как и я ). Я же решил найти альтернативные способы, но самостоятельно пока получается не очень.
По большому счету нужно сгенерировать числа допустим от 1 до 999999999999 и выгрузить их в любой текстовик. Пока я делаю это в объеме 999999, все получается неплохо, там кода то на 8 строк всего. Но повышая количество нулей в основном конечном числе сервер на котором я пытаюсь это сделать естественно говорит fatal error out of memory. Ожидаемо. Сам текстовик с таким количеством данных тянет на 4-5 гигов.
Однако мой путь привел меня сюда за советом, потому что являясь начинающим программистом, мой мозг помимо дельной логики естественно заводит меня в тупики моего бредогенератора, поэтому я сходу не могу дать ответ.
Я думал о том, что возможно стоит использовать задержку между определенным количеством перебора, чтобы дать серверу "выдохнуть", но это не избавляет от проблемы перегруженной памяти. Может быть стоит генерировать по 50 000 - 500 000 чисел и записывать в файл частями, тем самым используя меньший объем памяти но увеличивая сроки вычисления. Т.к. это в основном теория, сроки вычисления не важны, однако чтобы опровергнуть смысл слова "невозможно" это должно быть не 80 лет, пусть сроки будут не 10 секунд и не 10 минут, день, два три дня это не важно. Пусть никто никогда так не сделает, но этот результат тот, который мне нужен и я пока в замешательстве от того, как его можно достичь.
Буду рад совету заядлых программистов, даже если вы посмеетесь над моими начинаниями с высоты своего опыта.
Я прошу у вас помощи или совета в достаточно очевидном, для многих, вопросе. Просто эти многие говорят, что это не возможно в принципе из-за огромного объема данных, но я знаю маленький секрет программистов - в программировании возможно все. Ну по крайней мере так мне говорил мой первый учитель.
Небольшое отступление. Я новичок в программировании, но любознательность заставляет меня браться за разного рода задачи и однажды у меня вышел спор с коллегой сисадмином, в котором он пока выходит победителем. Я не против если это будет так, я просто хочу знать, что в программировании реально есть слово "невозможно" и сейчас выясняю эту ситуацию для себя.
Теперь собственно сам вопрос. Коллега сисадмин сказал, что в современных реалиях с помощью php кода на стандартных серверах невозможно обрабатывать огромное количество данных, но он мало знает о различных способах оптимизации кода ( в принципе как и я ). Я же решил найти альтернативные способы, но самостоятельно пока получается не очень.
По большому счету нужно сгенерировать числа допустим от 1 до 999999999999 и выгрузить их в любой текстовик. Пока я делаю это в объеме 999999, все получается неплохо, там кода то на 8 строк всего. Но повышая количество нулей в основном конечном числе сервер на котором я пытаюсь это сделать естественно говорит fatal error out of memory. Ожидаемо. Сам текстовик с таким количеством данных тянет на 4-5 гигов.
Однако мой путь привел меня сюда за советом, потому что являясь начинающим программистом, мой мозг помимо дельной логики естественно заводит меня в тупики моего бредогенератора, поэтому я сходу не могу дать ответ.
Я думал о том, что возможно стоит использовать задержку между определенным количеством перебора, чтобы дать серверу "выдохнуть", но это не избавляет от проблемы перегруженной памяти. Может быть стоит генерировать по 50 000 - 500 000 чисел и записывать в файл частями, тем самым используя меньший объем памяти но увеличивая сроки вычисления. Т.к. это в основном теория, сроки вычисления не важны, однако чтобы опровергнуть смысл слова "невозможно" это должно быть не 80 лет, пусть сроки будут не 10 секунд и не 10 минут, день, два три дня это не важно. Пусть никто никогда так не сделает, но этот результат тот, который мне нужен и я пока в замешательстве от того, как его можно достичь.
Буду рад совету заядлых программистов, даже если вы посмеетесь над моими начинаниями с высоты своего опыта.