Многие не совсем приветствуют подобное действие, да и реальные посетители заходят под IPv6.
Нет, не заходят реальные посетители. Возможно через лет 5 вернёмся к этому вопросу.
Потому что логотипы являются в данном случае торговой маркой и вам правообладатель не давал право на их использование. Где хранится логотип не имеет никакого значения, важно то, что на вашем сайте логотип размещён без разрешения.
Думаю лучше тут почитать: https://journal.tinkoff.ru/chuzhoy-logo/
Более всё расписано подробно.
VDS, PHP 7.4
Вообще бред, регулярки c i быстрее, при чём всегда.
Другой VDS, PHP 7.4
Не сказал бы, что сильная быстрее str_replace, раз 10 проверил
Другой VDS, PHP 8.1
На доли доли быстрее.
Windows 10. Перезагрузил свой apache, скорости в разы упали сразу. Весьма странно наблюдать такую регрессию. Возможно что-то уже сама ОС кэширует у себя.
25 000 - циклов
250 000 - циклов, уже не такие страшные показатели.
Самое смешное, что даже мой же тест из первого топика стал быстрее для str_replace 🤣
preg_replace: 0.2176
В песочнице вообще можно получить интересные результаты:
https://onlinephp.io/c/547d4
PHP 8.1
0
90000000
str_replace: 0.77543902397156
preg_replace: 1.2858679294586
preg_replace i: 0.83956909179688
str_replace: 0.63856887817383
preg_replace: 0.66068816184998
preg_replace i: 0.64235186576843
PHP 7.3
str_replace: 0.55451011657715
preg_replace: 0.57687377929688
preg_replace i: 0.58461213111877
А вот уже 7.0
str_replace: 0.48414707183838
preg_replace: 2.1467258930206
preg_replace i:
Fatal error: Maximum execution time of 3 seconds exceeded in /home/user/scripts/code.php on line 65
Вот и нашли мы точку отправную, когда всё было плохо. Тогда больше склоняюсь к ответу от vitor, что:
Если тестить на 7.2, то видно как скорость str_replace осталась ~ на прежнем уровне, а preg_replace выросла почти втрое.
Тем самым суть в том, что начиная с 7.2 можно использовать регулярки без сильной просадки в производительности. И чем новее версия PHP, тем меньше будет уже разница.
<?php
@ini_set('pcre.jit',0);
@ini_set('pcre.backtrack_limit', 90000000);// BY DEFAULT IS 100000
@ini_set('pcre.recursion_limit', 90000000);// BY DEFAULT IS 100000
echo ini_get ('pcre.jit');
echo "\r\n";
echo ini_get ('pcre.backtrack_limit');
echo ini_get ('pcre.recursion_limit');
Давайте тест до 1000 уменьшим:
А можно и до 100
@ini_set('pcre.backtrack_limit', 5000000);
Могу и больше:
Так это в вашем случаи вы долбите не изменяющуюся переменную:
$thisoutput2=preg_replace('@<div class="tm-karma__text">@',$replace,$thisoutput.$i);
$thisoutput2 нигде же не используется. Я же переписываю каждый раз текущую переменную, эмулируя реальную работу кода.
на вашем месте я бы просто признал свою ошибку и не вставал в позу, это плохое качество - не уметь признавать ошибки
ого, советник по жизни пришёл. То то думаю я в жизненном тупике, не знаю, что мне делать 🤣