[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: по sleep
Страницы: 1, 2
123456

<?php

sleep(100);

echo 1;

?>


Будет ли данный код грузить сервер?
Может таких конструкций вообще избегать?


Суть вот в чем.
Есть страница, на этой странице производится большое количество расчетов и запросов. Пользователь будет обращаться к этой странице пару раз за сеанс.
Необходимо сделать так, чтоб пользователь ждал 5 секунд перед тем, как начнутся все эти расчеты.(так сказать защита от досса)
twin
Не будет.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
123456
Понял, спасибо
Razzwan
Цитата (twin @ 15.09.2015 - 19:15)
Не будет.

А подробнее? Почему не будет, если все пользователи запустят одновременно ожидание, как оно работает?


_____________
Youtube канал WebDeveloper->Run()
Сайт для души
Gitter
AllesKlar
Цитата (Razzwan @ 15.09.2015 - 21:54)
Почему не будет, если все пользователи запустят одновременно ожидание, как оно работает?

пхп скажет с++ что надо ждать 100 секунд, с++ отправит процессору гонять холостой цикл 100 секунд, вот и вся нагрузка.
Хотя я противник всяческих слипов.
На мой взгляд правильнее было бы из яваскрипта SetInterval - ом отправлять запрос на сервер. Если готово, то выводить результат. Сервер же проверяет время последнего запроса, чтобы не ддосили почем не зря

_____________
[продано копирайтерам]
twin
От ДДОСа таким способом не защититься. Если это настоящий ДДОС. Если нужно увеличить время исполнения - вполне годится. Эта функция даже циклов никаких не запускает, просто приостонавливает процесс на определенное количество тактов. Которые кстати даже не учитываются таймлимитом.

Однако AllesKlar прав, делать задержку предпочтительнее на клиенте.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
sergeiss
Цитата (123456 @ 15.09.2015 - 19:12)
Будет ли данный код грузить сервер?

Ну на самом деле немного будет. Потому что под каждый такой процесс будет отведена память. На всё время, пока ждёт. И если запросов будет слишком много, то они забьют всю память и новые запросы не будут проходить. Так что не стОит так делать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
bestxp
хе хе еще как будет)))
еще не забываем про друга сессию и раз это некая система то они там будут))
вот попробуй

создай 2 файла в обоих session_start() в одном sleep(1000) в другом echo 1;
запускаешь первый со sleep в браузере, во втором окне второй и радуешься тому что пока первый не закончит, второй не начнет)))

а как решать сам подумай)) подсказка атомарные операции с файлами
depp
сервер грузить не будет. а вот веб-сервер, у которого кол-во одновременных коннектов может равняться 10. сделает не доступным ваш сайт тем людям, которые не вошли в первую десятку.
Razzwan
Удивили ответы профессионалов. Такие разные...

_____________
Youtube канал WebDeveloper->Run()
Сайт для души
Gitter
Razzwan
Цитата (depp @ 16.09.2015 - 12:02)
сервер грузить не будет. а вот веб-сервер
А чем, позвольте спросить, первый сервер отличается от второго? ohmy.gif


_____________
Youtube канал WebDeveloper->Run()
Сайт для души
Gitter
twin
Цитата (Razzwan @ 16.09.2015 - 10:22)
А чем, позвольте спросить, первый сервер отличается от второго
Сервером обычно называют железо и ПО, обеспечивающее работу сайта. Включая базы данных, серверные языки и так далее. Сюда же кстати относятся программы антиддоса. Веб-сервер, это программа, обеспечивающая связь сервера с "внешним миром". В частности Apache, Nginx и им подобные.

sleep() сервер не грузит, ибо замораживает процесс. Соответственно использование CPU (ресурс) не слишком то и вырастет. Может подожрать память, как Сергей говорит, но это от реализации зависит.

DDOS направлен на превышение возможностей именно веб-вервера. Если он справляется - на базу данных. И тут совершенно никакой разницы, есть sleep() или нет. Тут все зависит от трафика. Если трафик большой (много запросов секунду), то до PHP дело может и вовсе не дойти. Скурвится тот же аппач. Так что бороться с DDOS програмными методами - что мертвому припарка. Это решается на уровне железа.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
killer8080
Razzwan
тут важно понимать, что на самом деле делает sleep(). Многозадачный процессор должен выполнять множество программ одновременно, поскольку CPU (одно ядро) может выполнять в один момент времени только какую то одну, многозадачность реализуется распределнием рабочего времени между процессами, разбивая его на тайм слоты. В зависимости от приоритета длительость и количесво таймслотов у каждого процесса может быть различно. Всем этим хозяйством управляет ядро операционной системы. Кодга ты вызываешь sleep, интерпретатор сообщает ОС в течении n-го времни его не беспокоить, соответсвенно ОС в это время не выделяеет данному процессу ни одного таймслота. Ресурсы процессора при этом не расходуются, но процесс продолжает сидеть в ОЗУ, соотвенно на загруку памяти оно ни как ни влияет, ни в плюс, ни в минус, она загружен так же, как и без спячки. Если это консольный скрипт, то он работает каждый в своем процессе, и он особо ни на что ни влияет (хоть и пользы от этого то же нет), если скрипт работает в контексте модуля апача, то если используется mpm_prefork для обработки каждого tcp запроса запущен отдельный форк процесса, их число ограничено, вызывая в них sleep ты подвешиваешь подпроцесс на длительное время, в течении которого он мог бы обслуживать другие запросы. Выводы как бы очевидны wink.gif
AllesKlar
Про DDOS я образно написал, упоминая про SetInterval, дабы особо нетерпеливые юзеры не долбили 10 раз в секунду сервер, пока тот вычисляет, а если и долбят, то чтобы сервер посмотрел, прошло ли положенных 100 секунд, прежде чем дальше шевелиться.

_____________
[продано копирайтерам]
twin
Цитата (bestxp @ 16.09.2015 - 07:10)

создай 2 файла в обоих session_start() в одном sleep(1000) в другом echo 1;
запускаешь первый со sleep в браузере, во втором окне второй и радуешься тому что пока первый не закончит, второй не начнет)))

А причем тут сервер? Сделай тоже самое не в разных окнах, а в разных браузерах.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.