Ответы пользователя по тегу PHP
  • Почему Apache не работает с определёнными версиями PHP на Windows 10?

    Stalker_RED
    @Stalker_RED
    На вопрос из заголовка вы сами же и ответили - не работает, так как не хватает расширений.

    Строки в php.ini можно бы и добавить, если сами расширения есть в папке extensions.
    Да и сами файлы можно отдельно скачать и добавить.
    Ответ написан
  • В чем может быть причина разницы результатов запроса в PDO и SQL(разница формата дат)?

    Stalker_RED
    @Stalker_RED
    Я вам разных кастов принес https://extendsclass.com/postgresql/51d5be2
    Обратите внимание на таймзону, неплохо бы ее правильно указать. Либо делать строго по локальному времени, без таймзоны, если вы уверены что вам никогда не понадобятся клиенты в других часовых поясах.
    Ответ написан
    Комментировать
  • PHP GD Почему картинка не выводится в браузер?

    Stalker_RED
    @Stalker_RED
    Очень много странного, начиная с $dir = mb_strcut... вместо dirname()

    Вы ведь просто накладываете одну картинку поверх другой, как маску?
    Imagick делает это в пару строк https://stackoverflow.com/a/8725843
    Ответ написан
  • Как правильно отдать медиа файлы для веб проигрывателей и ссылок с других разделов компьютера/сервера?

    Stalker_RED
    @Stalker_RED
    1. Вы можете в конфиге nginx указать что при запросе mysite.loc надо искаьт файлы в d:\music
    2. вы можете на уровне операционной системы сделать симлинк
    mklink /d c:\work'mysite\music d:\music
    3. вы можете вот ака как у вас сейчас выдавать через PHP.
    Плюсы - легко можно добавить дополнительного кода - проверки прав доступа, статистику собрать, биллинг прикрутить.
    Минус один, но очень заметный при большом количестве пользователей - грузите процессор лишний раз.

    знак & и из-за этого могут сломаться get параметры
    экранирование? не, не слышал.
    Ответ написан
  • Php самостоятельно не способен работать с server sent event?

    Stalker_RED
    @Stalker_RED
    Способен конечно, вот первые попавшиеся гайды с примерами на php
    https://developer.mozilla.org/en-US/docs/Web/API/S...
    https://www.w3schools.com/html/html5_serversenteve...

    Но когда у вас будет не 10 клиентов, а десятки тысяч, то вам не понравится количество затрачиваемых ресурсов, и вы перепишете этот SSE на другой стек.
    Ответ написан
    3 комментария
  • Можно ли взять один компонент из Laravel 8.x / 10.х?

    Stalker_RED
    @Stalker_RED
    Надо было гуглить не "свой вопрос" а идти на официальный сайт laravel и переходить оттуда на гитхаб. Или просто гуглить "laravel source", и там в пару кликов находится роутинг https://github.com/illuminate/routing

    И да, почему именно laravel?
    Есть подробный гайд как отдельно использовать роутинг от симфони.
    Несколько лет назад я вообще порекомендовал бы silex - очень простой и быстрый микрофреймворк на компонентах от симфони. Для новичка отлично. Но, к сожалению, он не обновляется с 2018, и возможно придется что-то допиливать, если хотите использовать компоненты именно последних версий.
    Ответ написан
  • Help с роутером PHP?

    Stalker_RED
    @Stalker_RED
    На первый вопрос легко ответить:
    $isCorrect = myCheck($uri); 
    // саму проверку придется вам написать
    // мне отсюда же не видно какие вы считаете правильными, а какие неправильными.
    if (!$isCorrect) {
      include '404.php';
    }


    У вас там наверняка ошибка типа
    не найден файл includes/profile.php?q=$_POST[...
    вот ее и решите для начала.

    Весело, наверное, изучать классы и роутинг не умея в конкатенацию строк и кавычки.
    А потом, у вас точно есть файл "includes/profile.php?q=Vasya"? Или что вы собрались инклудить?
    Ответ написан
  • Если заменить условный оператора полиморфизмом в чём суть?

    Stalker_RED
    @Stalker_RED
    Суть в том, что ООП - это подход для того, чтобы уменьшить сложность СЛОЖНЫХ программ.
    Поэтому когда вы берете простой пример с тремя птичками или "cat says meow, doggy says bark", то разница не видна. В особо тяжелых случаях ООП код будет даже казаться более сложным, чем обычный if или switch.

    Представьте себе код какой-нибудь игры, масштаба warcraft, например. Там где есть несколько десятков разновидностей юнитов - всякие эльфы, орки, люди, палладины, лучники, снайперы, драконы, катапульты...
    Все они основаны на одном классе Unit, у всех есть много общего кода - методы получения координат, получение урона, отображение хелсбара, команды типа "держать позицию", "патрулировать" "атаковать"...
    При этом есть и различия в поведении - разная скорость, разные показатели урона, здоровья, брони, размера. Даже алгоритмы поиска пути могут отличаться, т.к. часть юнитов могут пройти в узком проходе, другие не могут, а кто-то вообще может летать,

    И если написать это на ООП, то у вас будет класс Unit с общими методами, и несколько десятков классов
    Paladin extends Unit
    GoblinTechies extends Unit
    GoldenDragon extends Unit
    в каждом из которых учтены особенности конкретного типа юнитов.

    А если без ООП, то у вас остаются условные операторы. Десятки условий для здоровья, еще десятки для брони, еще десятки для скорости, и в итоге каша такого размера и сложности, что работать с этим в какой-то момент станет невыносимо.
    Ответ написан
    4 комментария
  • Как быть с несколькими формами на ajax?

    Stalker_RED
    @Stalker_RED
    Поменять id.
    If the id value is not the empty string, it must be unique in a document.

    https://developer.mozilla.org/en-US/docs/Web/API/E...
    Ответ написан
    4 комментария
  • Как загрузить плейлист m3u8 на свой сервер?

    Stalker_RED
    @Stalker_RED
    Вероятно на сервере не настроен mime type для таких файлов.
    Должен быть
    application/x-mpegURL или application/vnd.apple.mpegurl для эппловских устройств, или еще какой-то ,там их куча подходящих.

    Можно посмотреть в запросе плеера в заголовке Accept какие форматы он ожидает увидеть.
    Сервер какой у вас?
    Ответ написан
  • Как в php заполнить автоматически массив данными?

    Stalker_RED
    @Stalker_RED
    function foo($template, $n_range = [0,0], $nn_range = [0,0]): array {
        $out = [];
        for ($n = $n_range[0]; $n <= $n_range[1]; $n++) {
            for ($nn = $nn_range[0]; $nn <= $nn_range[1]; $nn++) {
                $out[] = str_replace(['{n}', '{nn}'], [$n, $nn], $template);
            }
        }
        return $out;
    }

    https://ideone.com/Yz1f4o
    выхлоп
    Ответ написан
    Комментировать
  • Как НЕ фиксировать транзакцию после отработки php скрипта?

    Stalker_RED
    @Stalker_RED
    Непонятно что именно вы таким образом делаете, но в целом похоже на довольно распространенные случаи типа "незавершенная регистрация" или "неоплаченная корзина с покупками", "недописанный и неопубликованный пост" например.
    Если эти данные вам не особо нужны можно вместо БД использовать какое-то другое хранилище - сессию или даже localStorage на клиенте.
    Если нужны, лучше писать все-таки в базу, ставить пометку о том, что это незавершенная история, или устанавливать время жизни, чтобы потом по расписанию удалить просроченные.

    Про сажаю/не сажаю вообще непонятно о чем речь.
    Ответ написан
    5 комментариев
  • В каком виде, хранятся записи в БД, подобные постам в соц.сетях?

    Stalker_RED
    @Stalker_RED
    что-то по лучше, чем MySQL
    а что получше - феррари, карьерный самосвал или метро?
    Феррари вроде как быстрее, но не может перевезти 500 тонн за один рейс. Карьерный самосвал перевезти может, но расход горючки сумасшедший. А у метро фича - гоняет без пробок, но только там, где рельсы заранее проложили.

    Все хорошо у MySQL с ресурсами.
    У вас сейчас нет соцсети с миллионами юзеров, поэтому вам не нужна никакая навороченная сверхпроизводительная архитектура и бигдата.
    Когда упретесь в производительность вы сперва подкрутите настройки того-же мускула, потом распараллелите, потом часть данных вынесете в какой-нибудь редис, и только когда и этого будет мало, вот тогда вы задумаетесь о смене основной БД.
    К этому времени вы уже будете иметь представления какие у вас посты, сколько их, где у вас в архитектуре узкие места, и будете неплохо представлять какие есть альтернативы.
    Альтернативы конечно и сейчас есть, но они вам не нужны в данный момент - больше мороки с ними, чем пользы. Ну выберете вы сейчас метро, например, будете инвестировать скиллы и время в рельсы, а в тоге окажется что вам нужно не метро и не самоствалы, а больше подошли бы нефтеналивные танкеры. Вы заранее не можете предсказать что и как у вас будет устроено.

    Целиком в БД сохраняют с тегами HTML, или Объектом JSON

    Начать можете с подхода "храним в том виде в котором пришло с клиента, перед показом чистим".
    Это позволит на лету подправлять тот функционал что перед показом, и заплатите вы за это только некоторым количеством процессорной нагрузки.
    Когда он окончательно утвердится, можно перейти на "чистим пред сохраннением в БД", что сэкономит ту самую нагрузку (очистка ровно один раз), но сразу упадет гибкость, так как данные, которые вы удалили при чистке уже не восстановить.

    Тяжелые медиа, типа видеороликов, вы довольно скоро вынесете в отдельное хранилище, как только заметите что у вас этих одинаковых роликов тысячи, и неплохо бы к ним дедупликацию прикрутить.
    А как хранить эмоджи - практически не важно.
    Ответ написан
    Комментировать
  • Как правильно хранить секунды в базе даных?

    Stalker_RED
    @Stalker_RED
    Есть тип TIME, в который помещается до 839 часов.

    TIME values may range from '-838:59:59' to '838:59:59'. The hours part may be so large because the TIME type can be used not only to represent a time of day (which must be less than 24 hours), but also elapsed time or a time interval between two events (which may be much greater than 24 hours, or even negative)


    В принципе, можно и просто в int хранить, а форматировать при помощи SEC_TO_TIME или на фронте.
    Ответ написан
    2 комментария
  • Новое окно при отправке формы. Как сделать?

    Stalker_RED
    @Stalker_RED
    К форме добавьте target="_blank"
    https://developer.mozilla.org/en-US/docs/Web/HTML/...
    Ответ написан
    Комментировать
  • Как сделать ежесекундную обработку действий?

    Stalker_RED
    @Stalker_RED
    Другие технологии, их есть у нас. Называется - просто не делай этого вообще.
    Игрок получил повреждения - записываешь в базу, и все, ничего не регенерируешь.
    Когда произойдет какое-то новое взаимодействие с игроком - получил новый урон, обновил страницу, или какая там у вас игровая логика, тогда уже, при помощи формулы "прошедшее_время * скорость_регена = сколько_здоровья_оргененило".
    С баффами все немножко сложнее, но смысл тот-же - считайте формулой, и в тот момент когда данные нужны, а не в фоновом процессе неведомо зачем.
    Ответ написан
    7 комментариев
  • Как узнать процент похожести текста?

    Stalker_RED
    @Stalker_RED
    Частично проблема решается алгоритмом шинглов, который неплохо находит похожие тексты. Но хороший рерайтер легкло сделает текст отличающимся на 40-60% при сохранинеии смысла. А в последнее время можно вообще сделать магию: "чатгпт, перепиши этот текст другими словами добавив тоски о былом величии римской империи", и все это за считанные секунды и бесплатно.
    в качестве примера перефразированный ваш вопрос
    Каким образом можно определить процент схожести между текстом, который только что был написан, и текстом, который уже хранится в базе данных MySQL? Это необходимо для того, чтобы исключить повторения текстов. Например, если кто-то создает новость о происшествии, а она была опубликована два дня назад другим человеком, то это будет считаться дублем. Я знаю, что можно сравнивать тексты посредством перебора, но это займет много времени и будет нагружать MySQL. Есть ли какие-то другие методы, кроме использования Sphinx Search, чтобы достичь этой цели?

    По расчетам вот этого сервиса процент схожести менее 30%

    Ну и да, Rsa97 прав, чтобы избежать ложных срабатываний придется не просто сравнивать слова, а разбирать текст на смыслы, делать фактографический разбор, а это совсем не простая работа.
    Ответ написан
    Комментировать
  • Почему не срабатывает данный блок кода?

    Stalker_RED
    @Stalker_RED
    Потму что у вас кириллица в utf-8 скорее всего, а это не один байт, и вы вместо того чтобы найти замену буквы ищите замену первой половине буквы, а затем второй половине.

    Можно получать буквы через mb_substr() например.
    https://ideone.com/N2Tffg
    Ответ написан
    Комментировать
  • Как правильно разворачивать проект локально, написанный на php?

    Stalker_RED
    @Stalker_RED
    То что вы видите - не ошибка.

    В конфиге сервера нужно указать точку входа, скорее всего в вашем проекте это main.php
    Ответ написан
    Комментировать