Как с помощью PHP не получать какие-то страницы, а именно отправлять http запросы и в некоторых случаях получать ответ?
Это нужно реализовать только с помощью ВСТРОЕННЫХ инструментов.
Например, как провести атаку slow post с помощью PHP?
Другой пример:
Есть программа PHP, которая должна бесконечно выполняться (естественно, она повторяется с задержками, чтоб сервер не загнулся). Для этого эта программа перед завершением должна отправлять запрос самой себя, но не дожидаться ответа, так как при обычном запросе file_get_contents() она не завершится пока не получит ответ, что сильно нагрузит систему. Но просто сделать цикл нельзя по тому, что есть таймауты, которые могут остановить программу в самый неподходящий момент (таймауты лучше не изменять, а на хостинге вообще изменять невозможно).
Uxus Greenwood: python или Node.js не поддерживаются на бесплатном хостинге. Я делаю продукт, который должен полностью поддерживать работу на PHP сервере без дополнительных модулей и доступа к командной строке.
Uxus Greenwood: дело не в том, что это лично мое неудобство, а в том, что этот продукт используют другие люди (это движок) и нужно сделать всё максимально удобно - чтоб требовался только php и MySQL
Denormalization: мне нужен продукт, который не требует установки каких-либо модулей. Разрешено только подключать эти модули с помощью функции include() если они написаны на php.
Вадим Егоров: код по линку который я скинул - не требует curl. Там все на чистых сокетах. Вы всех достали уже своим курлом. Вы либо не знает что это, либо как-то по другому представляете себе работу с сетью в PHP. Развивайтесь, изучайте предметную область.
дело в том, что на shared хостинге нет возможности использовать PCNTL и по этому придется организовывать свою систему управления процессами - с помощью ping+token и блокировки файлов (это сложновато и когда я пытался это реализовать, хостингер меня забанил за чрезмерное использование процессорных ресурсов).
есть какой-то способ сделать всё без PCNTL?
Боюсь, с помощью средств PHP, доступных через web-интерфейсы (mod_php, [fast-]cgi) этого сделать нельзя, и, откровенно говоря, слава Богу!
Вообще же slow HTTP POST несложно организовать, открыв ручками сокет. А вот рекурсивно запрашивать себя не получится никак, потому что HTTP-сервер прибьёт процесс PHP сразу же после обрыва соединения, и правильно сделает. Для этих целей существует CLI-интерфейс. Тут на Ваш вкус можно писать демона, либо запускать из планировщика.
Валерий Рябошапко: для расчета PR сайта по степени его защищенности
если после атаки сайт работает - значит его писала не школота и он более-менее релевантный
Вадим Егоров: так ведь slow POST, насколько я успел понять, это атака на операционную систему, а не на движок сайта. Его цель - занять на сервере как можно больше TCP-соединений и упереться в лимит. Примерно как SYN-флуд, только надёжнее, так как сервер искренне полагает, что соединение правильное, а не мусорное. То есть проверка сайта через slow POST может максимум показать, насколько дорогой хостинг взяли владельцы.
С точки зрения проверки движка я бы предложил использовать HTTP-флуд - делать много сложных запросов вроде полнотекстового поиска. Или несложных (запрос страниц), но много. Это проверит кэширование (на всех уровнях), а так же рациональность использования памяти и процессора.