С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для Ign0Rb
3 / 3 / 3
Регистрация: 04.07.2016
Сообщений: 64

Fatal error: Maximum execution time of 30 seconds exceeded

08.10.2016, 16:51. Показов 1935. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем! Пишу скрипт автоматической рассылки сообщений пользователям, недавно вступившим в группу Вконтакте. Алгоритм простой и с ним я разобрался. Основную часть скрипта я написал и успешно протестировал. Работает так: получается массив всех участников, с помощью записанного в файл id последнего участника, которому было отослано сообщение получается массив новых участников, рассылается сообщение, новый id сохраняется в файл. Заказчик подумал-подумал и спрашивает: "А что будет если этот участник выйдет из группы?" Я решил проблему так: записываю в файл вообще всех новых участников в формате id,id,id, потом достаю это из файла, кладу в массив и сравниваю с участниками группы: если последний id есть, то его использую как метку, если нет, то удаляю из массива одно значение и по-новой.

Вот мой код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    
$group_access_token = "792af633d6e3863550e398753705eec46313e450e467094649dd7803d1932dae211ccc616584229f3ea47"; // Ключ доступа Вконтакте к тестовой группе
 
    $source = file_get_contents("https://api.vk.com/method/groups.getMembers?group_id=84537967&sort=time_asc&access_token=".$group_access_token);// Получение списка id в группе
    $result = json_decode($source);
    $users = $result -> response -> users;//Получение массива с id
 
    $ids = "199334161,246425847,244138146,168102701,210061033,196522144,186989024,280673101,265377937,288159695,211901048,221746460,288033594,212310543,251737459,237077552,279150880,287885960,208274909,288233337,68306959,283553680,203221340,278344943,275237076,290021738,117906431,283365179,281829454,288182202,235785234,164229915,289233805,253785826,279525939,258610736,263797105,287203603,216740867,279627113,21359638,273000845,193618484,287420711,287450650,275261159,136355912,283362415,254061829,287412190,275252042,285208097,218451414,264401825,273302464,151359098,342397536,342397780,342397857,342397566,12345678,12345678";//Содержимое файла
    $ids = explode(",", $ids);//Получение массива
 
    while(!in_array($last_id, $users)){
        array_splice($ids, -1, 0); //Удаление последнего элемента
        $last_id = end($ids);
    }
Код полностью автономен, данные из файла я вставил напрямую. Все массивы проверял функцией print_r(), высвечивал все переменные, но все в порядке. Выдаёт ошибку "Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\localhost\www\1.ru\index.php on line 11". Печально. Подскажите, что не так, пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.10.2016, 16:51
Ответы с готовыми решениями:

Fatal error: Maximum execution time of 30 seconds exceeded in
файлы в 5 строк обработал быстро, а вот в парудесятко тысяч крутиться 5 минут окошко браузере и потом Fatal error: Maximum execution time...

Ошибка Fatal error: Maximum execution time of 900 seconds exceeded in
у меня есть цикл, который должен выполниться 8344 раза. как сделать, чтобы отработал цикл нормально, без ошибок. $numericName =...

Робота через прокси, возникает ошибка Fatal error: Maximum execution time of 30 seconds exceeded in
Вот фрагмент кода в котором я через прокси пытаюсь загрузить содержимое http://www.site.ru но возникает ошибка Fatal error: Maximum...

5
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
08.10.2016, 16:57
Цитата Сообщение от Ign0Rb Посмотреть сообщение
Подскажите, что не так, пожалуйста.
Цитата Сообщение от Ign0Rb Посмотреть сообщение
Maximum execution time of 30 seconds exceeded
https://translate.google.ru/?h... 20exceeded
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,908
08.10.2016, 16:57
Цитата Сообщение от Ign0Rb Посмотреть сообщение
Maximum execution time of 30 seconds
На сервере стоит ограничение на макс выполнение скрипта - 30 секунд.

Надо либо думать, как сократить это время, либо увеличивать лимит.
0
 Аватар для Ign0Rb
3 / 3 / 3
Регистрация: 04.07.2016
Сообщений: 64
08.10.2016, 17:17  [ТС]
Обновляю код из-за пропущенной строки. Перезапустил с ней - результат тот же.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    
    
$group_access_token = "792af633d6e3863550e398753705eec46313e450e467094649dd7803d1932dae211ccc616584229f3ea47"; // Ключ доступа Вконтакте к тестовой группе
 
    $source = file_get_contents("https://api.vk.com/method/groups.getMembers?group_id=84537967&sort=time_asc&access_token=".$group_access_token);// Получение списка id в группе
    $result = json_decode($source);
    $users = $result -> response -> users;//Получение массива с id
 
    $ids = "199334161,246425847,244138146,168102701,210061033,196522144,186989024,280673101,265377937,288159695,211901048,221746460,288033594,212310543,251737459,237077552,279150880,287885960,208274909,288233337,68306959,283553680,203221340,278344943,275237076,290021738,117906431,283365179,281829454,288182202,235785234,164229915,289233805,253785826,279525939,258610736,263797105,287203603,216740867,279627113,21359638,273000845,193618484,287420711,287450650,275261159,136355912,283362415,254061829,287412190,275252042,285208097,218451414,264401825,273302464,151359098,342397536,342397780,342397857,342397566,12345678,12345678";//Содержимое файла
    $ids = explode(",", $ids);//Получение массива
 
    $last_id = end($ids);
 
    while(!in_array($last_id, $users)){
        array_splice($ids, -1, 0); //Удаление последнего элемента
        $last_id = end($ids);
    }
Цитата Сообщение от Jewbacabra Посмотреть сообщение
https://translate.google.ru/?hl=ru&t...nds%20exceeded
Я достаточно хорошо разбираюсь в английском, чтобы понять, что все это значит.

Цитата Сообщение от Jodah Посмотреть сообщение
На сервере стоит ограничение на макс выполнение скрипта - 30 секунд.
Надо либо думать, как сократить это время, либо увеличивать лимит.
Это я уже видел на просторах всемирной... Скрипт на 1 секунду, т.е. если заменить вот это:
PHP
1
 $last_id = end($ids);
на вот это:
PHP
1
 $last_id = array_pop($ids);
то все выполняется без проблем, но array_pop() удаляет последний элемент, а мне это не нужно.

Добавлено через 4 минуты
Или если заменить это

PHP
1
$last_id = end($ids);
на это

PHP
1
$last_id =$ids[count($ids) - 1];
тоже зависает. А ведь через echo и "$last_id = end($ids)", и "$last_id =$ids[count($ids) - 1]" нормально выводятся.

Добавлено через 5 минут
Поставил в php.ini max_execution_time = 60. Вот что вышло: "Fatal error: Maximum execution time of 60 seconds exceeded in Z:\home\localhost\www\1.ru\index.php on line 23".
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
08.10.2016, 18:29
Лучший ответ Сообщение было отмечено Ign0Rb как решение

Решение

Цитата Сообщение от Ign0Rb Посмотреть сообщение
while(!in_array($last_id, $users)){
* * * * array_splice($ids, -1, 0); //Удаление последнего элемента
* * * * $last_id = end($ids);
* * }
Видимо тут у вас бесконечный цикл. Обратите внимание что array_splice($ids, -1, 0) расшифровывается как удалить 0 элементов начиная с предпоследнего.

p.s. А вообще какие то странные махинации. Комментарии не помогают прочесть код.
1
 Аватар для Ign0Rb
3 / 3 / 3
Регистрация: 04.07.2016
Сообщений: 64
08.10.2016, 18:41  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
Обратите внимание что array_splice($ids, -1, 0) расшифровывается как удалить 0 элементов начиная с предпоследнего.
Да вы гений, господин! Спасибо, вам! Я, как обычно, поднял огромный кипишь из-за такого... А все дело в том, что у меня перед этим: "array_splice($ids, -1, 0)" стояло это: "$last_id = array_pop($ids)", и я, не зная, что array_pop() удаляет последний элемент, наивно полагал, что все нормально работает, вопреки всей нелогичности кода.

Добавлено через 2 минуты
Цитата Сообщение от tarasalk Посмотреть сообщение
А вообще какие то странные махинации. Комментарии не помогают прочесть код.
Значит не в ту сторону я старался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.10.2016, 18:41
Помогаю со студенческими работами здесь

Maximum execution time of 30 seconds exceeded
Fatal error: Maximum execution time of 30 seconds exceeded in c:\wamp\www\BD.php on line 35 что то связанное с времен им соединения ...

Maximum execution time of 30 seconds exceeded
Всем привет! У меня ВДСка. Пытаюсь запустить скрипт загрузки файла, файл не загружается. В логах PHP следующее: PHP Fatal error: Maximum...

Maximum execution time of 180 seconds exceeded
Всем привет! Сегодня без изменений в скрипте начал вылетать парсер с таймаутом Fatal error: Maximum execution time of 180 seconds...

Увеличить время выполнения скрипта (Maximum execution time of N seconds exceeded)
Написал парсер для сайта, с библиотекой PHP Simple HTML DOM Parser. Все отлично работает, но возникла такая проблема: "Fatal error:...

Простой парсер выдает ошибку "Maximum execution time of 30 seconds exceeded"
Доброго времени суток, форумчане. Нуждаюсь в вашем совете. В общем написал простенький парсер для статистики ливинтернета, все работает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru