производительность — функция сна Php для задержки?

Предположим, что сайт с «высоким» трафиком, я хочу использовать функцию php sleep (4), чтобы избежать затопления. Это хорошая идея или я должен использовать разные способы задержки? sleep () держит соединение открытым, может ли это быть проблемой?

Я делаю:

index.php -> stuff.php -> index.php

Stuff.php что-то делает, а затем спит (4); поэтому пользователь ждет 4 секунды с пустым экраном, а затем возвращается к индексу. Благодарю.

Обновить: Мои враги — хакеры, которые хотят DOS, и подчеркнутые люди, которые быстро нажимают на кнопку поиска, скажем … Вот почему я бы использовал задержку на стороне сервера.

1

Решение

Это не очень хороший подход, потому что даже выполнение «сна» apache / php все еще занимает процесс ОС для этого соединения. Таким образом, на веб-сайте с высоким трафиком вы получите множество одновременно работающих процессов Apache, которые будут использовать всю оперативную память вашего сервера.

Вместо этого Вы можете изменить одну из своих страниц и добавить к ней некоторый код Javascript, чтобы она могла подождать несколько секунд, а затем перейти к следующей странице с помощью javascript. Это должно решить вашу проблему.

4

Другие решения

Вы не можете избежать открытого соединения, иначе не может произойти никакого ожидания. Вы должны сделать это на стороне клиента или на стороне сервера. Однако, если вы запускаете PHP через Nginx а также php-fpm, вы должны быть в состоянии получить гораздо лучшую производительность, чем, скажем, Apache 2 и mod_php с рабочим МПМ.

Тем не мение, sleep() сам по себе довольно эффективен, так что вам не нужно беспокоиться об этом, потребляя процессор или что-то еще Увидеть Вот для получения дополнительной информации о том, как это реализовано на нижних уровнях.

В общем, лучший способ «эффективно ждать» — это использовать как можно больше асинхронного стека.

1

По вопросам рекламы [email protected]