- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Уважаемые коллеги,
Просвятите как на VPS под debian в фоновом режиме запустить скрипт, который будет слушать определенный сокет. Т.е. на порт XX пришел запрос - скрипт сработал.
Скрипт на PHP
---------- Добавлено 14.08.2015 в 09:12 ----------
правильно ли я понимаю, что скрипт можно запустить из прямо из консоли на vps
set_time_limit(0); ?
fsockopen("localhost",XXX);
do {
здесь обрабатываем входящие данные
}
while (true);
Такое будет работать? Не будет ли не нужной нагрузки на сам сервер при постоянной работе данного скрипта? Или какие пути есть?
Дать команду php -v, если после версии есть (cli) - можно запускать.
В CLI скрипт будет работать пока сам не остановится или не прервут. set_time_limit(0) бесполезен. Убедиться можно командой php -r 'sleep(600);', что даст 10 минут работы без нагрузки.
Проще запускать файл php -f myfile.php без всяких первых строк #!/usr/bin/php а сразу <?...?>
Нагрузка - как написан скрипт. Может и 100% ядра на процесс съесть.
set_time_limit(0);
ob_implicit_flush();
$address="localhost";
$port=7777;
$sock=socket_create(AF_INET,SOCK_STREAM,0);
if($sock<0)
echo "socket_create() failed! reason: ".socket_strerror($sock)."\n";
$ret=socket_bind($sock,$address,$port);
if ($ret<0)
echo "socket_bind() failed! reason: ".socket_strerror($ret)."\n";
$ret=socket_listen($sock,5);
if ($ret<0)
echo "socket_listen() failed! reason: ".socket_strerror($ret)."\n";
while(true){
$msgsock=socket_accept($sock);
if ($msgsock<0){
echo "socket_accept() failed! reason: ".socket_strerror($msgsock)."\n";
break;
}
$msg="Welcome!";
socket_write($msgsock,$msg,strlen($msg));
while(true){
$buf=socket_read($msgsock,2048);
if($buf===false){
echo "socket_read() failed! reason: ".socket_strerror($ret)."\n";
break 2;
}
if(!$buf=trim($buf))
continue;
$talkback="Answer!";
socket_write($msgsock,$talkback,strlen($talkback));
}
socket_close($msgsock);
}
socket_close($sock);
Вам нужно запустить скрипт в SSH.
nohup php5 -q /var/www/script.php > script.log 2>&1 &
обратите внимание, если у вас php5 или php. nohup позволяет запустить скрипт демоном, с переопределением вывода в лог.
Вам нужно запустить скрипт в SSH.
nohup php5 -q /var/www/script.php > script.log 2>&1 &
обратите внимание, если у вас php5 или php. nohup позволяет запустить скрипт демоном, с переопределением вывода в лог.
Т.е. в данном варианте скрипт будет выполнятсья "все время" и постоянно мониторить нужный порт?
PS: Спасибо за помощь
Начиная с версии PHP 5.4.0 модуль CLI SAPI содержит встроенный web-сервер.
http://php.net/manual/ru/features.commandline.webserver.php
Небольшое дополнение: не используйте версию PHP 5.2 и меньше в них "утекает" память и "вечный" цикл умирает через день-два. Тот же код в PHP 5.3 / 5.4 работал месяцами.
Или для PHP 5.2 нужно делать перезапуск скрипта через каждые ХХ-тысяч итераций.
Т.е. в данном варианте скрипт будет выполнятсья "все время" и постоянно мониторить нужный порт?
Если скрипт не выходит из цикла или ожидания, то в фоне он будет работать бесконечно долго. В вашем случае при прослушивании порта потребуется такой запуск.
nohup просто перенаправляет консольный вывод, вам не нужно держать открытый SSH коннект. Процесс будет запущен в фоне, как демон.