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 скрипта для нескольких пользователей

 PHP.SU

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


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

> Без описания
Nyam
Отправлено: 12 Октября, 2014 - 08:06:56
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


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




Здравствуйте!
У меня имеется скрипт, который запускается по крону каждые 2 минуты, проходит по всей базе пользователей и в зависимости от изменений их настроек выполняет некие действия.

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

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

Сам скрипт сделан по такой структуре:
PHP:
скопировать код в буфер обмена
  1.  
  2. $strSQL = mysql_query("SELECT * FROM `users`");
  3. while($row = mysql_fetch_array($strSQL)) {
  4. куча всего, что нужно делать с каждым пользователем
  5. }
  6.  


Прошу вашей помощи в решении данной проблемы.

(Отредактировано автором: 12 Октября, 2014 - 08:07:51)

 
 Top
kotyara1979
Отправлено: 12 Октября, 2014 - 09:33:05
Post Id


Частый гость


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


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




Цитата:
куча всего, что нужно делать с каждым пользователем


Есть подозрение, что как раз здесь и кроется собственно проблема.


-----
Сделать можно все. Главное одеть каску.
 
 Top
Nyam
Отправлено: 12 Октября, 2014 - 10:07:47
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


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




kotyara1979 пишет:
Цитата:
куча всего, что нужно делать с каждым пользователем


Есть подозрение, что как раз здесь и кроется собственно проблема.


Задам вопрос немного по другому. Есть скрипт который работает по настройкам пользователя в бд и запускается через крон. Скрипт запускается и переходит к пользователю 1 в настройках пользователя 1 указано всё верно, что нужно что-то сделать по api с сайтом A. Скрипт всё сделал. Переходит к пользователю 2, у него указано так же в настройках всё верно и ему нужно сделать что-то по api с сайтом B, который в данный момент сломался (к примеру просто по запросу не выдел нужный ответ или время получения ответа превысило норму ли миллион других случаев) и скрипт выдал ошибку и к пользователю 3 в итоге он не дошел. Как избежать того что он даже не начал работать с пользователям 3?
 
 Top
3d_killer
Отправлено: 12 Октября, 2014 - 11:22:13
Post Id



Участник


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


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




сервер пишет логи access.log вот там посмотри на что он ругнулся и остановился
скорее всего как сказал kotyara1979 ошибка где то там
 
My status
 Top
Dastor
Отправлено: 12 Октября, 2014 - 12:26:15
Post Id


Гость


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


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




Используй try catch

Пример

PHP:
скопировать код в буфер обмена
  1.  
  2. $strSQL = mysql_query("SELECT * FROM `users`");
  3. while($row = mysql_fetch_array($strSQL)) {
  4.     try {
  5.         //куча всего, что нужно делать с каждым пользователем
  6.     }
  7.     catch (Exception $e)
  8.     {
  9.         // Тут пишем в файл или в базу информацию об ошибке. В $e будет информация об ошибке
  10.     }
  11. }
  12.  

(Добавление)
3d_killer пишет:
сервер пишет логи access.log вот там посмотри на что он ругнулся и остановился
скорее всего как сказал kotyara1979 ошибка где то там


Сообщения об ошибках обычно пишутся в error_log
 
 Top
Nyam
Отправлено: 12 Октября, 2014 - 18:55:56
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


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




3d_killer пишет:
сервер пишет логи access.log вот там посмотри на что он ругнулся и остановился
скорее всего как сказал kotyara1979 ошибка где то там


Проблема не в том что я не знаю где искать и править в дальнейшем ошибки, а чтобы ошибка одного пользователя не затрагивала остальных.
 
 Top
3d_killer
Отправлено: 12 Октября, 2014 - 19:54:40
Post Id



Участник


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


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




при чем тут остальные пользователи??? скрипт вы сказали стартует крон, ошибка в скрипте!
тут->
PHP:
скопировать код в буфер обмена
  1.  
  2. {
  3. куча всего, что нужно делать с каждым пользователем
  4. }
  5.  
 
My status
 Top
Nyam
Отправлено: 12 Октября, 2014 - 21:42:34
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


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




3d_killer пишет:
при чем тут остальные пользователи??? скрипт вы сказали стартует крон, ошибка в скрипте!
тут->
PHP:
скопировать код в буфер обмена
  1.  
  2. {
  3. куча всего, что нужно делать с каждым пользователем
  4. }
  5.  

При том, что как только скрипт где то застопорился он не продолжает работать с другими пользователями.
 
 Top
Dastor
Отправлено: 12 Октября, 2014 - 22:44:48
Post Id


Гость


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


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




Nyam, так try/catch пробовали?
Под вашу задачу как раз подходит. Если в try получили ошибку, то выполнение передается в блок catch.
Далее цикл продолжит выполняться.
В catch можно, например, добавить
Цитата:
а пользователю с ошибкой в бд писал что у него что то не правильно.
 
 Top
3d_killer
Отправлено: 12 Октября, 2014 - 22:57:01
Post Id



Участник


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


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




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

ну правильно, вот там где много всего не сделана обработка исключений, не видя "много всего" тут тебе никто не поможет, экстрасенсов нет Недовольство, огорчение
 
My status
 Top
Nyam
Отправлено: 12 Октября, 2014 - 23:18:44
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


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




Dastor пишет:
Nyam, так try/catch пробовали?
Под вашу задачу как раз подходит. Если в try получили ошибку, то выполнение передается в блок catch.
Далее цикл продолжит выполняться.
В catch можно, например, добавить
Цитата:
а пользователю с ошибкой в бд писал что у него что то не правильно.


Спасибо, буду пробовать ваш вариант.
(Добавление)
3d_killer пишет:
Nyam пишет:
При том, что как только скрипт где то застопорился он не продолжает работать с другими пользователями.

ну правильно, вот там где много всего не сделана обработка исключений, не видя "много всего" тут тебе никто не поможет, экстрасенсов нет Недовольство, огорчение


Вопрос заключался не в том как выявлять в чем случилась ошибка, а возможно ли сделать, что если при выполнении настроек n юзера что-то пошло не так то не остановиться, а срезу перейти к работе с настройками юзера n+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