|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.01.2017, 09:39 | #1 |
Регистрация: 22.01.2017
Сообщений: 7
|
Ошибка Notice: Undefined offset: 0 - PHP
Добрый день!
Я не опытный программист, требуется небольшая помощь в решении ситауции! Имеется небольшой скрипт вывода случайной строки из случайного файла из случайной папки. Данный скрипт работает, но время от времени выдает ошибку: Notice: Undefined offset: 0 on line 12 Итак, как работает скрипт: 1. Он берет список файлов из определенной папки и случайным образом выбирает один файл (в папке содержится около 2000 текстовых файлов, количество файлов постоянно меняется) 2. Из выбранного файла он берет случайную строку (все файлы разного размера с разным количеством строк, но в основном размер файлов колеблется от 5 Мб. до 50 Мб.) 3. Полученную строку он выводит на экран монитора. Я прекрасно понимаю, что Notice - это не ошибка а предупреждение и ее можно смело заглушить, но проблема в том, что при возникновении этого предупреждения ничего на экран не выводится а нам требуется чтобы всегда выводилась случайная строка из файла при каждом перезагрузке страницы. Я перерыл большое количество литературы и читал много ответов по этой "ОШИБКЕ" но ничего не могу сделать. Пробовал оборачивать в Get и POST но результатов не дало. Возможно есть другое решение или может ктото посоветует использовать какойто другой движок для сайта случайного вывода. Забегая вперед скажу, что база строк занимает 10 Гб. Т.е. выборку нужно делать из 10 Гб. текстовых строк разной длины. Возможно есть какоето решение с базой данных mysql или какойто движок сайта, который можно использовать под данную задачу? А Вот и сам код: PHP код:
|
22.01.2017, 11:53 | #2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
PHP код:
Последний раз редактировалось Andkorol; 22.01.2017 в 12:03. |
22.01.2017, 12:11 | #3 | |
Регистрация: 22.01.2017
Сообщений: 7
|
Цитата:
|
|
22.01.2017, 12:36 | #4 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
http://php.net/manual/ru/function.is-file.php может решить этот вопрос.
|
22.01.2017, 13:10 | #5 | |
Регистрация: 22.01.2017
Сообщений: 7
|
Цитата:
Как я понимаю нужно проверить строки на пустоту? |
|
22.01.2017, 13:15 | #6 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
А из файла – легко. Вот перед тем, как получать строку – неплохо бы убедиться, что мы пытаемся получить её именно из файла, а не из папки. Для этого и пригодится is_file. |
|
22.01.2017, 13:23 | #7 | |
Регистрация: 22.01.2017
Сообщений: 7
|
Цитата:
Работает безупречно!!! СПАСИБО ОГРОМНОЕ!!! Стоит ли мудрить с проверкой на на '.', '..' и каталоги в результатах работы scandir() |
|
22.01.2017, 13:38 | #8 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
Если наличие подкаталогов внутри целевого каталога с файлами исключено – то не стоит. '.' и '..' можно исключить, просто изменив стартовую позицию для rand() с 0 на 2 (при определении файла для получения контента). |
|
22.01.2017, 13:47 | #9 | |
Регистрация: 22.01.2017
Сообщений: 7
|
Цитата:
Всем СПАСИБО! Дано: 1. бесплатный хостинг с поддержкой php 5.6 2. Папка объемом 10 ГБ. с файлами в кол-ве 2000 шт. средним размером в 30 Мб. Нужно: 1. из папки выбрать случайный файл 2. Выбрать, из выбранного случайного файла, случайную строку. РЕШЕНИЕ: Код:
1. Прогнали данный скрипт 100000 раз 2. Ошибок не обнаружено! |
|
29.01.2017, 10:33 | #10 |
Регистрация: 22.01.2017
Сообщений: 7
|
Andkorol
Подскажите пожалуйста а как теперь результат работы вывести в нескольких частях страницы? Я имею ввиду как полученный результат echo $all_str[$i]; вывести в разных частях страницы? Другими словами, мне нужно чтобы было примерно так: <h1> <?php echo $all_str[$i]; ?> </h1> <hr> <br> <h3 style="text-align: center;"> <a href="/searchs/?tag=<?php echo $all_str[$i]; ?>" target="_blank" style="color: rgb(0, 0, 255); font-style: italic;"><?php echo $all_str[$i]; ?></a> </h3> Последний раз редактировалось helken; 29.01.2017 в 10:47. Причина: добавил понимания |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Notice: Undefined variable, помогите найти ошибку | Женя32 | PHP | 12 | 13.10.2016 21:03 |
Ошибка Notice: Use of undefined constant | feramount | PHP | 1 | 07.08.2013 05:09 |
В чем проблема? - Notice: Undefined variable | onleon | PHP | 1 | 03.07.2010 11:37 |
Ошибка Notice: Undefined offset: 2 | Ruska882009 | Помощь студентам | 1 | 18.11.2009 15:16 |