Задать вопрос
Ответы пользователя по тегу PHP
  • Есть ли разница между памятью в PHP и C#?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    РНР работает как консольная утилита. Запустился, поработал долю секунды, завершился.
    Поэтому вопросы управления памятью в 99% случаев РНР разработчиков не волнуют. Как и её очистка
    Чисто технически подробности управления памятью также полностью скрыты от разработчика.
    Всё что надо знать о работе РНР с памятью - "РНР работает с памятью за тебя"
    Так что в целом, единственное что вас должно интересовать - это не работать с большими объёмами данных в скрипте. Но это и так очевидная рекомендация.

    Если хочется прям вдаваться в детали (хотя совершенно непонятно, зачем это джуну), то PHP insernals Memory management
    Ответ написан
  • Как приветси GET-ответ в удобочитаемый вид?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это называется не "GET ответ", а JSON
    Ответ написан
    Комментировать
  • Как перенести длинную строку в коде?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    $send .= "sudo screen -dmS screen_name docker run $user_container $memory_container -d -it --cpus '1' --memory=" . $mem."m $v1 $v2 $v3 $v4 $v5 -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 $v6 $v7 $v8 $v9 $v10 $v11 $v12 $v13;";

    но как же я задолбался все эти кавычечки выковыривать
    Ответ написан
    2 комментария
  • Возможно ли в PHP по заголовкам точно определить устройство и Браузер?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Весь вопрос в требуемой точности.
    Я могу написать в юзер-агенте что у меня FireChrome Opera версии 100500 для межгалактических планшетов.
    А на самом деле это будет Brave для PC XT.

    Однако для любых осмысленных применений точности определение вполне достаточно. Существует 100500 либ, которые выдают все требуемые характеристики по юзер-агенту.
    Собственно, все сайты в интернете так и работают, в частности определяя мобильность клиента.
    Ответ написан
    Комментировать
  • Хорошо ли использовать в PHP неявное приведение типов int bool?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Технически равноценны, но второй при сравнении с нулём выглядит глупо.
    Хорошо или не хорошо - вопрос философский. РНР до сих пор язык со слабой типизацией, и никаких подвохов или расходов тут нет.
    Я бы сказал, что неявное приведение к булеву типу до сих пор используется повсеместно, что в if, что в while. Особенно в последнем. Писать while (($row = $stmt->fetch()) !=== false) вместо while ($row = $stmt->fetch()) пока ещё народ отказывается.
    Ответ написан
  • Почему не номер телефона не проходит соответствие шаблону в БД?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    С каких пор LIKE стала работать с регулярками?
    select 9998887766 REGEXP '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
    Ответ написан
    1 комментарий
  • MemcacheD: как хранятся ключи "под капотом" у него?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Понятное дело что ни к посетителям, ни к сессиям мемкеш никакого отношения не имеет, как и РНР. HTTP - это stateless протокол, и все клиенты в РНР на одно лицо.
    Мемкеш - это демон, который обслуживает входящие соединения, которые для него тоже все на одно лицо. Причём это лицо - РНР, а не какой-то там НТТР клиент.
    РНР конечно может создать ключ в мемкеше на основе куки, полученной от пользователя, но для мемкеша это будет совершенно обычный ключ, не привязанный ни к какому "клиенту". А всё привязка - это чисто интерпретации на уровне пользовательского РНР кода.

    А вот почему тормоза и дубли - тут я ответить не могу, потому что с мемкешем сталкивался лет 10 назад по касательной. Это к вопросу о том, что искать часы надо там, где потерял, а не не под фонарём потому что светлее. И задавать вопрос надо про исходную проблему, а не про свои догадки по её поводу.

    По идее никаких дублей в мемкеше быть не должно - это key-value хранилище и ключи должны быть уникальными.
    Возможно, выгрузка показывает уже просраченные ключи.
    А тормоза, возможно, из-за того, что ключи постоянно перезаписываются, вместо того, чтобы записываться только тогда, когда надо обновить данные.

    В целом мемкеш уже давно вышел из употребления, и его заменил редис
    Ответ написан
  • Почему не нужно заранее объявлять массив?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Почему не нужно заранее объявлять массив?


    Как правильно заметили в комментарии выше, "это РНР, тут так можно".
    Раньше вообще можно было инициализировать переменную как строку, и потом обращаться к ней, как к массиву.
    Начиная с 7 версии начался отход от таких вольностей, но он всё ещё в процессе.

    Значит то что пишут $result = [] Это я удобства?


    Не для "удобства", а для того, чтобы волосы на голове сохранились подольше.
    В данном случае нужды в явном присвоении нет.
    Но любой код со временем изменяется. И функция tower_builder() может разрастись. Там появится ещё один цикл, который работает с массивом $result. Который получит какое-то значение до начала нашего цикла, и в итоге конечный результат будет неправильным. Поэтому $result = [] перед началом работы с массивом - это не каприз или удобство, а необходимость
    Ответ написан
    Комментировать
  • Почему не подгружаются стили?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Потому что ./css/style.min.css - это бессмыслица и карго культ.
    Ссылки на локальные ресурсы должны быть абсолютными путями от корня сайта. А не вот это вот.
    То есть в данном случае надо убрать точечку.

    Ну ведь всё просто же.
    В отличие от файловой системы, где никогда заранее не знаешь, где у неё корень, с веб сайтом всё просто и понятно, корень всегда один - /
    / - корень сайта
    /css - папочка css в корне сайта
    /css/style.min.css - файл style.min.css в папочке css которая лежит в корне сайта
    Всё просто, понятно, очевидно

    Зачем вообще было писать эти точечки?
    Они начинаются, когда ты только учишься склыдывать а и б в HTML. И нет у тебя никакого веб-сервера, а есть файлик на диске. В этом случае да - без относительных путей никак не обойтись
    Но как только начинается РНР, который без веб сервера уже не работает, про все точечки в локальных ресурсах надо забыть, и писать всегда абсолютные пути от корня сайта.
    Ответ написан
    2 комментария
  • Как с помощью while вывести подсчет количества строк в одной таблице по совпадению с данными из другой?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Во-первых, зачем тут первый запрос?
    Во-вторых, кроме количества совпадений надо наверное запрашивать и сам id? Ну по логике? если мы хотим вывести id, то надо наверное это поле указать в SELECT?
    В-третьих, надо добавить группировку, GROUP BY
    В-четвёртых, если надо вывести любые значения из первой, а не только те, у которых есть записи во второй, то нужен LEFT JOIN
    Ответ написан
    Комментировать
  • Как правильно составить структуру массива?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    1. зачем getBoxData возвращает вложенный массив?
    2. зачем все последующие элементы $boxData добавляются в первый элемент, вместо того чтобы добавлять все элементы в исходно пустой массив?
    Ответ написан
  • Почему слетают стили и картинки при изменении роутера?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну как обычно, относительные пути в картинках.
    Пути к локальным ресурсам всегда должны представлять собой абсолютный путь от корня сайта.
    Ответ написан
    1 комментарий
  • Как правильно отправить в базу данных сразу несколько ссылок на картинки?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    То есть весь вопрос сводится к "при записи я кодирую данные c помощью json_encode, а при выводе не раскодирую, но виноваты создатели этого сайта".

    Но главные проблемы этого кода конечно не в json.
    Во-первых, этот код позволяет заливать РНР файлы, и первый же малолетний придурок этим воспользуется.
    Во-вторых, этот код пропускает SQL инъекцию, и первый же малолетний придурок этим воспользуется.
    Остальное уже мелочи.

    Но если отвечать на вопрос в целом, то да - вставлять все ссылки в одно поле это действительно неправильно.
    Плюс, в БД всегда должны храниться только сырые данные, а любое форматирование добавляться только при выводе. То есть сохранять надо только сами имена файлов.

    Но в данном случае вообще непонятно, зачем сохранять ссылки в БД.
    При заливке берётся id созданного пользователя, создаётся папка с таким именем, и в неё заливаются файлы.
    При выводе файлы читаются из этой папки и выводятся.
    Ответ написан
  • Как данный код будет выглядеть на php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    скорее так
    foreach ($this->tests as $key => $value) {
       $this->tests[$key] = Test::clearLines($test);
    }
    Ответ написан
  • Как открыть php файл из html файла?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    так же, как и на любой другой
    Ответ написан
  • Есть ли listIterator в php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Обычно итераторы в РНР не нужны - всё делается простейшими средствами типа foreach.
    Я так понимаю, что в данном случае нужен обычный оператор присвоения
    $this->test[] = ...
    Ответ написан
  • Почему не срабатывает php файл?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ответ написан
    Комментировать
  • Нужно ли использовать interface?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Нет, ничего указывать не надо.
    Тут и без интерфейсов получатся отличные самолёты из соломы и палок.
    Ответ написан
  • В PHP 5.6 и MySQL Emoji отображаются как ????

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    mysql_query - это какой-то бред и анахронизм. Этой функции давно нет в языке.
    Кодировка соединения задаётся либо через mysqli_set_charset либо через DSN, в зависимости от выбранного API

    В целом,при использовании utf8mb4 всё должно работать
    Ответ написан
    Комментировать
  • Повторно присвоить новое значение в массиве?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Автора губит то, что вместо нормального кода он всё время пишет какие-то каракули.
    И можно только догадываться, по его невнятному бормотанию, что там у него на самом деле.

    Скорее всего, $all[$name] = //получение данных для name.
    И разумеется, элемент массива здесь перезаписывается.
    И надо ему что-то вроде $all[] =

    Но в целом, конечно, этот вопрос надо отправить в музей, с табличкой "как не надо задавать вопросы. "
    Ответ написан
    Комментировать