Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Ожидание окончания запроса..
В 99% скрипт срабатывает....1 % нет.. Если данные не успевают получить с базы данных яваскрипт срабатывает без данных..в итоге сбой.
Собственно вопрос..как добиться полной загрузи всех данных с базы..а потом уже срабатывание яваскрипта...
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Segol пишет:
как добиться полной загрузи всех данных с базы..а потом уже срабатывание яваскрипта...
By design.
Сначала делаете, что хотите - потом выводите страницу клиенту. JS отработает после загрузки страницы, т.к. код висит на ready.
----- PostgreSQL DBA
Segol
Отправлено: 29 Мая, 2014 - 11:45:15
Гость
Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013
Помог: 0 раз(а)
Извиняюсь, но сейчас так и есть..
в верху обрабатывается пхп..в низу яваскрипт..
с теорией понятно.что надо дожидаться завершения процесса пхп
как практически реализовать.. маленький пример..плис...
Мелкий
Отправлено: 29 Мая, 2014 - 12:16:01
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
плис? Я не разбираюсь в программируемых логический интегральных схемах.
Я пока не понимаю, пример чего вам надо и что вы хотите реализовать.
Когда сработал ready - php уже умер. Дожидаться окончания работы PHP нет смысла. Он может уже давно обрабатывать другие запросы, а вы всё ещё загружаете страницу от фронтенд-сервера.
----- PostgreSQL DBA
Segol
Отправлено: 29 Мая, 2014 - 13:02:39
Гость
Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013
Помог: 0 раз(а)
"Когда сработал ready - php уже умер."
В том то и проблема.. что он срабатывает ещё до завершения всех процессов пхп..
по идеи яваскрипт срабатывает после выбора данных пхп..
а по сути.сейчас "как успеет".. если данные пхп успеют полностью загрузится с базы , обработаться- всё сработает как надо ..
если не успеют (повиснет или отклик с базы затормозится)- яваскрипт обработается без данных что приводит к падению процесса
Мелкий
Отправлено: 29 Мая, 2014 - 13:31:21
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Докажите.
Древний драйвер mysql_* в принципе не умеет неблокирующие запросы. Когда mysql_query возвращает управление, уже не только запрос отправлен субд, а уже выполнен и вплоть до последнего байта получен ответ.
----- PostgreSQL DBA
Segol
Отправлено: 29 Мая, 2014 - 13:42:23
Гость
Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013
Помог: 0 раз(а)
Да вы поймите.. я и ищю проблему почему происходит подобное..
теоретически.. залучённые в ready обрабатываются после окончания процесса..всё верно..
я хочу понять почему у меня иногда яваскрипт включается ранее чем данные обработаются..
что доказывать , если с 10 раза данные не успевают получить с базы а яваскрипт срабатывает без данных..
я ведь показал как выглядит выбор с базы и запрос яваскрипта на основании этих данных....
IllusionMH
Отправлено: 29 Мая, 2014 - 13:52:24
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
Segol, проверьте ручками запросы к базе при которых возникает проблема. Похоже, что данных в переменных нет.
данные начинают терятся после того, как яваскрипт функция Start срабатывает ранее чем данные были выбраны с базы..
Мелкий
Отправлено: 29 Мая, 2014 - 14:12:40
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Segol пишет:
я ведь показал как выглядит выбор с базы и запрос яваскрипта на основании этих данных....
И не показали обработку ошибок. Банальное - запрос вернул 0 строк. Что случится? Судя про приведённому коду - пара notice.
Segol пишет:
я и ищю проблему почему происходит подобное..
То выдвигайте и опровергайте обоснованные теории.
Хорошо, допустим ваша теория:
Segol пишет:
я хочу понять почему у меня иногда яваскрипт включается ранее чем данные обработаются..
Удалим из вопроса лишние сущности.
Выведите просто на экран. Всегда есть значения? Значит PHP и СУБД к проблеме отношения не имеют.
Заметили, что есть не всегда - яваскрипт, как и любые клиентские технологии, к проблеме отношения не имеют.
----- PostgreSQL DBA
Segol
Отправлено: 29 Мая, 2014 - 14:48:43
Гость
Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013
Помог: 0 раз(а)
Может вы просто укажете на возможную причину ? (Добавление)
значение есть всегда при первом входе.. согластно полученных Get данных с бызы выберется номер
если обновлять страницу к примеру 10 раз..то на 10-9 раз .
данные предполагаю не выбираются с базы и переменные обнуляются..
обнуляются именно переменные которые должны были выбраны с базы..
Мелкий
Отправлено: 29 Мая, 2014 - 15:18:16
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Segol пишет:
данные предполагаю не выбираются с базы и переменные обнуляются..
Ок, гипотеза есть. Теперь докажите или же опровергните её.
Выведите переменные, выведите то, что можете достать о результате запроса. Количество рядов, например.
Хотя я и не понял, что же у вас произошло на "10-9 раз". Пара null'ов?
Отлично, значит дело пошло - теперь известно, что JS ни при чём.
На всякий случай ещё раз скажу явно - проверьте свой error_reporting. Он должен быть -1
----- PostgreSQL DBA
Segol
Отправлено: 29 Мая, 2014 - 15:26:22
Гость
Покинул форум
Сообщений всего: 95
Дата рег-ции: Май 2013
Помог: 0 раз(а)
Мелкий пишет:
Segol пишет:
данные предполагаю не выбираются с базы и переменные обнуляются..
Ок, гипотеза есть. Теперь докажите или же опровергните её.
Выведите переменные, выведите то, что можете достать о результате запроса. Количество рядов, например.
Хотя я и не понял, что же у вас произошло на "10-9 раз". Пара null'ов?
Отлично, значит дело пошло - теперь известно, что JS ни при чём.
На всякий случай ещё раз скажу явно - проверьте свой error_reporting. Он должен быть -1
я не говорю что js причём или не причём..а говорю что он срабатывает всегда..но ингда без данных которые были выбраны с базы..
в принцепе вопрос и состоял в том , чтобы яваскрипт не срабатывал пока данные с базы не были получены.. (Добавление)
Segol пишет:
"10-9 раз".
на 9-10 раз данные с базы пустые..
IllusionMH
Отправлено: 29 Мая, 2014 - 15:34:28
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
Segol, самый банальный способ проверки.
Сразу после строкой с запросом пишите результаты в файл. Окрытвайте страницу и после проблем - смотрите что в файле.
Способ лучше - настраиваете дебагер и смотрите построчно что не так.
данные не "не успели прийти из базы", а с ними проблемы, либо с условиями ниже.
Данные действия в PHP происходят синхронно, а значит ответ не может прийти после того как JS код отправился клиенту.
DelphinPRO
Отправлено: 29 Мая, 2014 - 17:09:58
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Весь день пытаюсь вникнуть в тему, ни фига не понимаю.
Если у вас нет аякс-запросов на странице, принимающих данные, которые должны быть обработаны функцией, никаких проблем не должно быть.
Где php и где javascript! Буквально на разных компьютерах, первый на сервере, второй у пользователя. php отработал свою логику, сформировал html разметку и отдал ее клиенту. Или отдает порциями, неважно. В браузере яваскрипт выполняется последовательно, по мере подгрузки html кода. Если навешивается событие ready - то коллбэк функция в обработчике этого события выполниться только тогда, когда браузер пример последний байт разметки.
Вы либо там какую-то хрень мутите непонятную, либо у вас поселился барабашка в компьютере.
Понятно, что второе мы, здравомыслящие люди, отметаем сразу.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.