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 :: Выполнить скрипт после заверщения другого скрипта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Serhio
Отправлено: 07 Мая, 2015 - 16:24:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 194
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Всем привет!

Первый скрипт выполняет передачу данных ассинхронно.
При клике на кнопку начинает выполняться второй скрипт, который считывает результат выполнения первого скрипта, но первый скрипт не закончил свое выполнение на 100%. В результате второй скрипт считал не полную информацию

Есть для такой ситуации что-нибудь аля $(document).ready()?

(Отредактировано автором: 07 Мая, 2015 - 16:27:59)

 
 Top
Sail
Отправлено: 07 Мая, 2015 - 16:26:36
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Serhio, инициализация выполнения первого скрипта и кнопка для второго - на одной "страничке" находятся?
Ну и никто не мешает где-нить хранить статус актуальности данных.
 
 Top
Serhio
Отправлено: 07 Мая, 2015 - 16:30:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 194
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Sail пишет:
Serhio, инициализация выполнения первого скрипта и кнопка для второго - на одной "страничке" находятся?
Ну и никто не мешает где-нить хранить статус актуальности данных.


На одной! Статус актуальных данных хранить можно в БД, никто не мешает, только это не к этой задаче комментарий, если я вас правильно понял.

(Отредактировано автором: 07 Мая, 2015 - 16:30:51)

 
 Top
Sail
Отправлено: 07 Мая, 2015 - 16:35:36
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Serhio пишет:
На одной!

Во-первых, можно сделать недоступной для нажатия кнопку вызова второго скрипта, пока не получите подтверждения выполнения первого.
Во-вторых, всё равно при выполнении второго скрипта надо проверять статус актуальности данных, подготовленных первым скриптом.
Ну и если тот пишет в БД, можно, например, в рамках одной транзакции выполнять все требуемые обновления и тогда второй скрипт будет читать хоть и устаревшие, но все данные, которые были актуальны на момент до запуска первого скрипта).
(Добавление)
PS: и ещё есть Объект deferred

(Отредактировано автором: 07 Мая, 2015 - 16:42:32)

 
 Top
Serhio
Отправлено: 07 Мая, 2015 - 16:48:28
Post Id



Частый гость


Покинул форум
Сообщений всего: 194
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Sail пишет:
Serhio пишет:
На одной!

Во-первых, можно сделать недоступной для нажатия кнопку вызова второго скрипта, пока не получите подтверждения выполнения первого.
Во-вторых, всё равно при выполнении второго скрипта надо проверять статус актуальности данных, подготовленных первым скриптом.
Ну и если тот пишет в БД, можно, например, в рамках одной транзакции выполнять все требуемые обновления и тогда второй скрипт будет читать хоть и устаревшие, но все данные, которые были актуальны на момент до запуска первого скрипта).
(Добавление)
PS: и ещё есть Объект deferred


Ага, спасибо большое!
Видимо я совсем не знаком с проверкой статуса актульности данных. Как это делается?
Кстати первый пункт тоже интересен пример каким методом вы это сможете сделать?

(Отредактировано автором: 07 Мая, 2015 - 16:50:59)

 
 Top
DeadCowsDontMoo
Отправлено: 15 Мая, 2015 - 17:48:50
Post Id


Забанен


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Sail пишет:
можно сделать недоступной для нажатия кнопку вызова второго скрипта, пока не получите подтверждения выполнения первого.


Напиши как Хорошо или ссылочку... Закатив глазки
 
 Top
Sail
Отправлено: 15 Мая, 2015 - 20:00:28
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




DeadCowsDontMoo пишет:
Sail пишет:
можно сделать недоступной для нажатия кнопку вызова второго скрипта, пока не получите подтверждения выполнения первого.


Напиши как Хорошо или ссылочку... Закатив глазки

Самое простое: jquery атрибут disabled
 
 Top
MAXUS
Отправлено: 16 Мая, 2015 - 08:43:08
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Serhio пишет:
Всем привет!

Первый скрипт выполняет передачу данных ассинхронно.
При клике на кнопку начинает выполняться второй скрипт, который считывает результат выполнения первого скрипта, но первый скрипт не закончил свое выполнение на 100%. В результате второй скрипт считал не полную информацию

Есть для такой ситуации что-нибудь аля $(document).ready()?


1. А насколько, в принципе, оправдано наличие кнопки, которая запускает второй скрипт?
1.1 Можно ведь инициировать запуск второго скрипта после того, как выполнится первый. Даже при асинхронном запросе.
1.2 Ну, или по завершению первого скрипта создавать объект с полученными данными, а по нажатию на кнопку второго скрипта проверять наличие этого объекта и запускать второй скрипт только если этот объект существует.

2. А кнопку при генерации рисуй сразу с атрибутом disabled, а по выполнению первого скрипта удаляй этот атрибут. Только в этом случае см. п.1Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB