Доброго вечера, по скольку пишу с смартфона ниже выложу код из заметок примера реализации счетчика онлайна под php 7.2.25.
Давайте сделаем это и закроем вопрос реализации счетчика онлайна на базе сервера птс, не hauth.
Код:<?php // Функция для проверки статуса сервера по TCP 7777 function check_server_status() { $host = 'localhost'; $port = 7777; $timeout = 1; $socket = @fsockopen($host, $port, $errno, $errstr, $timeout); if ($socket === false) {...
Переделано на redis.
Запрос подключения сделан по другому.
Изначальный вариант как говорил был взят с заметок на смартфоне.
в исследовательских целяхЗачем так сложно? Случайное число можно выводить в зависимости от времени, все равно никто не проверит.
На птсе есть специальный пакет который отдает информацию включая онлайн. Пакет ProtocolVersion с протоколом -1 -2 -3.
Примеры уже были можно попробовать найти на форуме.
public function VerCheck($id) {
$fp = fsockopen("127.0.0.1", "7777", $errno, $errstr, 15);
$rs = "";
$buf = pack("c", 14);//0x0E
$buf .= pack("i", $id);
$len = unpack("v", fread($fp, 2)); $rid = unpack("c", fread($fp, 1));
for ($i = 0; $i < (($len[1]-4) / 4); $i++) { $read = unpack("i", fread($fp, 4)); $rs .= $read[1]; }
fclose($fp); return($rs);
}
Вот рабочийPHP:public function VerCheck($id) { $fp = fsockopen("127.0.0.1", "7777", $errno, $errstr, 15); $rs = ""; $buf = pack("c", 14);//0x0E $buf .= pack("i", $id); $len = unpack("v", fread($fp, 2)); $rid = unpack("c", fread($fp, 1)); for ($i = 0; $i < (($len[1]-4) / 4); $i++) { $read = unpack("i", fread($fp, 4)); $rs .= $read[1]; } fclose($fp); return($rs); }
оно?
Зачем? Смысл? Ради получения онлайна это бред. Хватит элементарного кэша под это всё.если нужно что то кешировать советую разобраться с тем что такое Redis
Тянуть библиотеки, а за ними ещё с 10 зависимостей? Ради получения онлайна, как то такое себе увлечение. Пхпшного опкэша не хватит под это дело? Который кстати доступен даже на виртуальном хостинге, в отличие от того же редиса. Что мешает даже самый элементарный массив для кэша? Ну или уж прям совсем элементарный в виде файла. Потом вспоминается одно сообщениев композере кстати полно cache библиотек
Ультанул)Зачем? Смысл? Ради получения онлайна это бред. Хватит элементарного кэша под это всё.
Тянуть библиотеки, а за ними ещё с 10 зависимостей? Ради получения онлайна, как то такое себе увлечение. Пхпшного опкэша не хватит под это дело? Который кстати доступен даже на виртуальном хостинге, в отличие от того же редиса. Что мешает даже самый элементарный массив для кэша? Ну или уж прям совсем элементарный в виде файла. Потом вспоминается одно сообщение
Посмотреть вложение 74129
Да, в этом примере redis мож и нах не нужен, мессадж был про то, что лучше юзать более удобные решения чем запись чего то там в файл, а потом читать из этого файла. Хотя что то, то другое так или иначе пишет в конечном итоге в какие то там файлы. Что касается библиотек, если перед тобой стоит задача прикрутить кеширование - не надо сидеть и бздеть над своей технологией, есть куча библиотек которую ты достал из коробки поставил и завёл, всё, тебе осталось только сохранить в кеш и получить кеш, тебе не надо писать саму систему этого кеша, которая уже миллион раз написана в разных позах - выбирай на любой вкус. По поводу того что тянет за собой другие библиотеки - если потратить 10 минут , можно найти библиотеки с минимальными зависимостями, сам не люблю когда какая нибудь херня (недавно вот кстати искал решение для миграций) тянет за собой половину Laravel или Symfony (я щас про Doctrine, использовать конечно же его я буду там где он предустановлен, ибо нахер он нужен). Ну а так, пакеты очень облегчают жизнь и экономят время. В этом то вся и суть, у бизнеса нет времени ждать пока ты найдешь способ сделать свое решение легким и сэкономишь 100 мегабайт на диске юзера, есть задача выкатить фичу вчера - нет времени сидеть и думать как эту фичу сделать легковесной, надо прикрутить paypal? идешь в композер, ищешь paypal, импортируешь к себе, наследуешься и пишешь уже саму фичу, тебе надо по минимуму вникнуть в документацию и процессинги, и всё, готово, тебе не надо сидеть и описывать класс работы с апи, как то его рефакторить и тп, подключил, унаследовался и оно работает. Бизнес перед тобой ставит задачу прикрутить пайпал, а не написать с нуля класс который уже давно есть и он включает в себя зачастую все ендпоинты, если один чел будет неделю прикручивать пайпал, а другой за неделю прикрутит 10 платежек, понятно какой программист выгоден бизнесу, это же очевидноРади получения онлайна это бред
Я тоже придерживаюсь мнения, чем проще код тем лучше.Зачем? Смысл? Ради получения онлайна это бред. Хватит элементарного кэша под это всё.
Тянуть библиотеки, а за ними ещё с 10 зависимостей? Ради получения онлайна, как то такое себе увлечение. Пхпшного опкэша не хватит под это дело? Который кстати доступен даже на виртуальном хостинге, в отличие от того же редиса. Что мешает даже самый элементарный массив для кэша? Ну или уж прям совсем элементарный в виде файла. Потом вспоминается одно сообщение
Посмотреть вложение 74129
redis кроссплатформенный, хз причем тут opcache, это вроде как больше про производительность кода (хотя я с ним не работал могу ошибаться, но кажется назначение у него чутка другое), если имеется ввиду memcached тут возникает вопрос - а что если к тебе придет проггер с маком, как ему работать с проектом? с виндой еще ок, вроде как есть длл-ка на оф сайте... Если вы юзаете докер еще терпимо, но тоже такое себе, как по мне удобнее работать с кодом на хост-машине и видеть что происходит сразу после ctrl+s. Поэтому Redis, ты сразу лишаешь себя лишнего геморроя в будущем. Понятно, что по сабжу он тут нахер не вперся, наверно это проф деформация уже я не могу смотреть на процедурный код и самописный кеш в файликах в папке со скриптомПхпшного опкэша не хватит под это дело
Немного обновился код без redis и был добавлен первым вариантом.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?