Я только не понял, откуда возьмётся перерасход TCP портов при обычном коннекте. Создавая новое соединение мы закрываем старое. Ку да у вас при этом пропадает исходящий порт?
$ sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768 60999
net.ipv4.tcp_tw_reuse=1
и тогда система начнёт прибивать TIME_WAIT коннекты до истечения таймаута, если свободных портов больше нет. Ещё можно расширить диапазон эфемерных портов. Или перевести коннекты к базе на юникс сокет (хотя здесь уже начинает работать лимит на количесто открытых файловых дескрипторов). Но это всё лечение симптомов. Более правильным вариантом был бы переход на персистентные соединения. Но у меня проект сидел на PDO и я не рискнул, так как PDO не чистит коннект между http запросами как это делает mysqli. В итоге я просто включил tcp_tw_reuse для быстрого решения проблемы на месте, затем задеплоил проект на второй сервер, настроил балансировку запросов между ними, а в конце-концов просто переписал эту часть проекта на java, где есть нормальные пулы коннектов.А используется там практически безальтернативно PDO, которое в mysql_change_user() не умеет. Так что советуйте свои советы пользователям Ларавля и Симфони, а когда они с вами согласятся - то тогда так и быть, попинайте и меня, грешного.
"Экономию исходящих TCP портов" вы себе выдумали на пустом месте, при использовании обычного коннекта будет такая же "экономия".
В документации на эту функцию нигде не написано, что она служит для проверки соединения или замены mysqli_ping.
И вот именно для того, чтобы сэкономить все эти операции, mysqli_change_user не следует дёргать при каждом обороте event loop-a. Это просто глупость.
А если коннект действительно упал, то mysqli_change_user не сработает.
поэтому надо написать свою замену mysqli_ping
...
и не выдумывать.
С таким же успехом можно и вовсе новое соединение открывать.
X-Forwarded-For
может указываться несколько ip адресов через запятую. Первым будет ip клиента, а следующие - ip промежуточных прокси, через которые проходил запрос:X-Forwarded-For: <client>, <proxy1>, <proxy2>
X-Real-IP
указывается только ip клиента. $ host ru.archive.ubuntu.com
ru.archive.ubuntu.com is an alias for mirror.yandex.ru.
mirror.yandex.ru has address 213.180.204.183
mirror.yandex.ru has IPv6 address 2a02:6b8::183
Cannot initiate the connection to ru.archive.ubuntu.com:80 (2a02:6b8::183). - connect (101: Network is unreachable)