• Как обрабатывать ошибки file_get_contents?

    @Vitsliputsli
    Надим Закиров,
    Нужно мне сделать функцию работающую по принципу чёрной коробки - функция принимает ссылку и возвращает скачанный файл, ну или false если скачать файл по какой-то причине не получилось

    file_get_contents именно так и работает.

    Если file_get_contents при загрузки файла из сети получает не 200-ый ответ, он выдает ошибку. Как эту ошибку перехватить?

    Зачем? Как вы хотите ее обрабатывать?
  • Почему перестало работать echo при обращении в файлу с кодом php?

    @Vitsliputsli
    VelesIS, вам 2 человека ответили "почему".
    С самой пересылкой данных на сайт проблем нет.

    "откройте Network в инструментах и посмотрите что прилетает в ответ на ваш ajax в одном и в другом случае".
  • Почему перестало работать echo при обращении в файлу с кодом php?

    @Vitsliputsli
    Так проводите исследование до конца, js падает на парсинге json, откройте Network в инструментах и посмотрите что прилетает в ответ на ваш ajax в одном и в другом случае, что из этого является json, а что нет.
  • Почему нет php5.6 (он установлен в системе) в /usr/bin?

    @Vitsliputsli
    dev123, если специальных настроек не делали, то Апач использует свой внутренний модуль php, и он никакого отношения к командной строке php не имеет. Путь /etc/php/5.6/cli намекает что php5.6 как минимум был установлен как отдельный интерпретатор, либо он удален, а конфиги нет, либо он где-то лежит, а лежать он может где угодно, в зависимости от фантазии того, кто собирал его, либо собирал пакет, либо просто скопировал куда-то - ищите поиском.
  • Как получить группы чисел из массива PHP сумма которых равна = N?

    @Vitsliputsli
    sergeyflancer, значения в массиве всегда кратны друг другу? Т.к. работать будет только в этом случае.
    Если взять некратные значения, то работать не будет:
    $cost = 1100;
    $array = [
    '7' => 1000,
    '8' => 300,
    '9' => 300,
    '10' => 300,
    '11' => 200,
    ];
  • Что будет, если не кодировать данные в JSON?

    @Vitsliputsli
    lexstile,
    1 - валидный JSON, и браузер его успешно распарсил;
    2 - JSON который еще раз был закодирован в JSON.
  • Что такое stateless?

    @Vitsliputsli
    MaMkO, если делаете это одним api запросом, то не нарушаете. Если, к примеру, посылаете запрос, что работаете с пользователем таким-то, а потом шлете запрос про действия этого пользователя, подразумевая, что сервер уже знает о каком идет речь, то нарушаете.
    Redis тоже СУБД, но к этому вопросу это отношения не имеет никакого.
  • Как переустановить нужный Xdebug?

    @Vitsliputsli
    gogolive,
    1) php как модуль Апача и php в командной строке - это абсолютно разные программы. Поэтому, если ваш запрос в браузере обрабатывает Апач (и именно модулем), то нужно смотреть phpinfo именно в нем. Что там выводит php -v в командной строке абсолютно не важно, это сосвсем другая программа. Тоже самое относится к настройкам php cli в PHPStorm - абсолютно не важно что там.
    2) Настройки вроде норм, добавьте xdebug.remote_autostart=on на время отладки, чтобы не полагаться на extension браузера. idekey не особо нужен, вряд ли так все сложно. Зачем полный путь до xdebug.so не знаю, но это ваша система, вам виднее.
    3) Проверьте, что PHPStorm слушает 9000 для xdebug. И если idekey используете, то его значение в PHP совпадает с настройками xdebug.
    4) Если ставили xdebug вручную, не из репов, то проверить, что скачали версию для нужной версии php и разрядности.
  • Насколько актуален чистый PHP?

    @Vitsliputsli
    XOROX,
    лучше знать 1 язык хорошо, чем 3 не хорошо.

    С этим никто не спорит, но речь шла о другом. Хороший программист пишет не на языке, а с помощью языка, поэтому изучать нужно программирование, язык вторичен. Зациклившись на одном языке, вы станете его заложником, будете знать только его подходы, и не сможете решить задачу иначе.
  • Как правильно синхронизировать 2 поля с разных таблиц?

    @Vitsliputsli
    Kolya Vantukh, чем не подходят транзакции? Если говорить про целостность данных, то они как раз их обеспечивают, 2 апдейта будут зафиксированы только вместе, либо вообще не будут зафиксированы. Триггеры вносят неочевидное поведение, вы в коде будете видеть 1 апдейт, и нужно как-то догадаться, что в триггерах есть что-то еще. Гораздо удобнее, когда все описано в одном месте, и не нужно постоянно прыгать из кода в базу и там проверять не висит ли какой-нибудь триггер.
  • Как получить последний подходящий результат при объединении таблиц?

    @Vitsliputsli
    1) сгруппировать, получить id-ники с max(docPublishDate) и выбрать строки по ним;
    2) использовать аналитические функции, отсортировать внутри окна по docPublishDate и выбрать первое или последнее значение в зависимости от сортировки.
  • Насколько актуален чистый PHP?

    @Vitsliputsli
    Согласен со всеми пунктами, разве что "php-шников и фронтов много", а вот специалистов среди них очень мало.
  • Как правильно синхронизировать 2 поля с разных таблиц?

    @Vitsliputsli
    Kolya Vantukh, хм, не помню, что я имел ввиду, когда это писал... Чушь сморозил.
    Что касается вопроса, используйте транзакцию для этих 2 апдейтов. Тригеры - плохой выбор, они создают неочевидность.
  • Как отсортировать данные SQL запросом?

    @Vitsliputsli
    Iskander48, добавьте поле сортировки и в нем укажите нужный порядок. Если писать нужную вам логику сортировки прямо в запросе выглядеть будет ужасно.
  • Как в php типизировать переменную самым коротким способом?

    @Vitsliputsli
    michaelromanov90, код должен быть понятный, для этого он не обязательно должен быть очень коротким. Введение дополнительной переменной вполне может помочь в понимание, что вы взяли из большого массива и зачем, если дать ей хорошее имя.
    Дмитрий,
    Возможно просто не стоит приводить к числам, а проверки делать не строгие, либо просто правую часть кастить к строке, это в разы сократит строки кода.

    Не думаю, что это хороший подход. Если у вас числа, то и сравнивать их нужно как числа, если число кастить в строку и затем сравнивать, у любого возникнет вопрос зачем так сделано и точно ли здесь числа.
    А не строгую проверку лучше применять в крайнем случае, когда по-другому слишком сложно, а не когда сравниваем переменные одного типа.
  • SQL инъекция в UPDATE возможна ли?

    @Vitsliputsli
    FanatPHP, ну как зачем, после prepare в памяти сервера постоянно будет висеть подготовленное выражение, соответственно должен быть способ его убрать. Хотя лимит на их кол-во большой, что-то около 16 тысяч, но на практике при уничтожении объекта prepared statements идет запрос deallocate prepare на сервер. Даже если его не уничтожать, он будет уничтожен при уничтожении объекта соединения, и все равно перед закрытием соединения полетят deallocate prepare.
    У меня подготовленные выполняются на 12% медленнее эмулированных (без переиспользования), для MySQL 5.7 и MySQL 8, причем в 8 все запросы работают медленней. Интересно то, что в PostgreSQL разницы нет, подготовленные выполняются также быстро, не смотря на необходимость большего кол-ва запросов по сети. Также интересно то, что PDO по-умолчанию выбирает эмуляцию для MySQL, и подготовленные для PostgreSQL. Проверял на php, не думаю что есть разница, но надо бы попробовать в другом языке.
  • SQL инъекция в UPDATE возможна ли?

    @Vitsliputsli
    FanatPHP, совсем никаких изменений? Даже если смотреть чисто документацию, в 8 исчезли ограничения кеширования prepared statements, связанные с тем, что бинарный протокол смотрел только запросы бинарного протокола, не обращая внимания на текстовой.
    Ну а насчет матчасти - вот и займись ей. Бери wireshark, смотри сколько там "сетевых запросов" будет
    Впрочем, можно просто подумать, а нафига там три-то? :)

    Так возьми wireshark, открой документацию, ознакомься с теорий и сам ответь на вопрос зачем 3 запроса: prepare, execute, deallocate prepare.
  • SQL инъекция в UPDATE возможна ли?

    @Vitsliputsli
    FanatPHP, подучил матчасть.
    Вопрос с китайскими кодировками похоже уже поправили, но в любом случае экранирование не гарантирует 100% безопасности. Насчет эмуляции действительно неверно написал, тут вопрос не к MySQL, а к PDO использующему эмуляцию по-дефолту. Насчет производительности спорить не буду, вопрос неоднозначный.
    А насчет этого:
    откуда там три-то? Это риторический вопрос. На знание матчасти, а не фантазий системы "что вижу про то и пою"

    учи матчасть.
  • SQL инъекция в UPDATE возможна ли?

    @Vitsliputsli
    FanatPHP, ну так научи, а не просто "что вижу про то и пою".
  • Как сократить время выполнения SQL запроса?

    @Vitsliputsli
    Soho,
    в этом поле может быть vin код авто

    Вы же пишите, что у вас таблица EAV, а то от такого комментария можно тронуться.

    С учетом ваших вычислений, вероятно стоит рассмотреть вариант вынесения в отдельную таблицу, где использовать integer. Т.к. нужно еще и среднее, то индексация не поможет, все равно придется проходить по всем 10 000 значений. Если возможно еще большее увеличение, то вариант не подходит.
    И как уже предложили, вариант с уже рассчитанными агрегатами.