Ответы пользователя по тегу PHP
  • По фэншую ли синтаксис?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Так писать по фэншую код или есть запись объектов в массив ровнее?
    У Вас тут не столько запись чего-то в массив, сколько предварительное присвоение значения переменной, с уже последующем добавлением оной в массив. Оно работать конечно будет, но выглядит несколько странно, на мой взгляд. Подобные принципы обычно используются в условных операторах или циклах (if/while), для последующей обработки переменной (результата).

    Если Вам нужно просто собрать массив, обычно пишут так:
    $arr = [
        new Quadrate(6),
        new Cube(5),
        new Rectangle (2),
        ... ,
    ];


    P.S. Так же этот код можно написать в строчку, если он не выходит за границу (80 или 120 символов, в IDE и редакторах эта линия почти всегда есть по умолчанию) или если просто если Вам очень хочется написать этот код в одну строку.
    Ответ написан
    6 комментариев
  • Как получить текст между скобок на php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
  • Как в реальном времени отследить время изменения файла на php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как через php отследить то что файл был изменен/обновлен?
    С помощью функции filemtime

    Как-то примерно так будет выглядеть код (условно, возможны ошибки):

    $mtime = filemtime('file.name');
    
    
    while(true) {
        $mtime2 = filemtime('file.name');
        if($mtime2 != $mtime) {
            $mtime = $mtime2;
            // Отправить письмо
        }
    }


    P.S. А вообще для этих целей не PHP использовать надо, а встроенные механизмы ОС, на подобии таких...
    Ответ написан
    1 комментарий
  • Какой фреймворк актуален на 2019 год и будет актуален хотя бы годик ещё?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Какой фреймворк актуален на 2019 год и будет актуален хотя бы годик ещё?
    Laravel и Symfony, живы и будут жить я думаю ещё не один годик. Оба не самые простые (в общей сложности), хотя написать "Hello world application" особого труда не составит ни в первом ни во втором.

    Если говорить о фреймворках как таковых вообще, которые проживут "ещё годик", я думаю как минимум стоит так же упомянуть: Codeigniter (его я обычно рекомендую новичкам в веб-разработке, MVC и PHP в частности), Yii (его изучать я бы Вам крайне не рекомендовал), Zend (про него ничего не скажу, но уверен, что он ещё проживёт не один год).
    Ответ написан
    9 комментариев
  • Как отследить нажатие на кнопку php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    При нажатии на них должна меняться переменная в php:
    В первую очередь, Вы должны понимать, что переменные в PHP будут переинициализированы, при каждом новом запуске скрипта и то, что все переменные и значения в PHP-скрипте существуют только в тот момент, пока этот самый скрипт выполняется.

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

    Как это сделать?)
    С помощью отправки формы на сервер, либо с помощью AJAX-запроса, это наиболее распространённые способы.
    Ответ написан
    4 комментария
  • Как вывести список всех таблиц MySQL и количество строк в каждой из них впри помощи PHP?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Что я делаю не так?

    По списку:
    • Переменные в строках обычно обрамляются в фигурные скобки
    • В одном случае у Вас переменная обернута косыми кавычками, в другом нет (в запросе), нужно соблюдать единый единый стиль кода
    • Для точного подсчёта кол-ва строк в таблице можно исползовать SELECT COUNT(*) FROM table_name
    • Примерное кол-во строк, вместе с таблицами можно посмотреть такSHOW TABLE STATUS FROM db_name
    Ответ написан
  • Как перекидывать данные с одного сервера на другой?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как такое лучше реализовать?
    Как вариант, можно попробовать настроить репликацию. Насколько я помню, в MySQL можно реплицировать в т.ч. и отдельные таблицы. Единственный момент - реплицироваться они будут немедленно, а не раз в сутки...

    Если же говорить про "раз в сутки"... На вскидку, я бы наверное сделал как-то примерно так:
    0. Настраиваем синхронизацию папки в которой будет лежать дамп таблицы, через rsync
    1. По cron'у запускаем задачу дампа таблицы (через mysqldump)
    2. Полученный дамп уходит на удалённый сервер, rsync'ом
    3. После обновления файла на сервере-получателе - по триггеру (после обновления файла) - загружаем дамп в нужную нам БД. Триггер можно попробовать прикрутить либо на уровне самого rsync либо попытаться сделать через inotify. Подробнее не скажу, не проверял лично, но в теории должно работать.

    Альтернативный для п.3 вариант, как же писал выше предыдущий оратор - можете на сервере просто принимать файл (я думаю лучшим вариантом будет упакованный в gzip/bzip дамп нужной таблицы) обычным способом, распаковывать и заливать его в БД. Отправлять файлы с сервера-источника можно curl'ом, как вариант.
    Ответ написан
    Комментировать
  • Как сравнить дату в php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Я думаю один из наиболее простых вариантов - это сначала привести даты к формату Timestamp (т.е. по сути к числу), а потом сравнить их (2 числа). Подробности описаны, например, здесь.
    Ответ написан
    8 комментариев
  • Как изменить массив, подключаемый через require?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как уже верно подметил предыдущий оратор - добавить в массив Вы можете что угодно, а сохранить это "без танцев с бубном" вряд ли получиться. Если Вам нужно загружать и сохранять какие-то данные для этого есть другие способы и форматы, например, JSON (json_encode()/json_decode()), или serialize()/unserialize().
    Ответ написан
    Комментировать
  • Как избавиться от протокола в url адресе?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Это же элементарно делается... Например: $url = str_replace('http://', 'https://', $url);(подробности) или через preg_replace можете сделать (например, заменить все 'http://', 'https://' и 'ftp://' на "пустую строку", делается так же элементарно).
    Ответ написан
    Комментировать
  • Как замедлить загрузку сайта?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Если Вам для отладочных (собственных) целей - в Google Chrome (я думаю и в его производных тоже) есть настройки скорости загрузку/отдачи, можете там выставить любые параметры и тестировать.

    Если "глобально" - я думаю это можно попробовать реализовать, например, на уровне Nginx'а.

    Если и этого мало - можете попробовать ограничить скорость на уровне сервера, на эту тему так же масса информации, например тут обсуждалось.
    Ответ написан
    Комментировать
  • Как правильно сделать загрузку большой таблицы csv в MySQL средствами PHP (Request Timeout)?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    То, что Вы описали (когда в браузере "Таймаут" а скрипт продолжает работать) скорее всего связано с режимом работы PHP - [F]CGI (или подобным), в этом режиме сервер ждёт какое-то время (обычно секунд 30) ответа от CGI-сервера (PHP) и не дождавшись (точнее по истечению этого времени) выдаёт timeout (который Вы скорее всего и наблюдали).

    На мой взгляд, наиболее простое решение (которое лично я бы рассматривал в первую очередь) - удалённое подключение к БД и загрузка данных. То есть, БД на хостинге а грузите в неё данные Вы с локальной машины, из программы для администрирования БД или из того же локально запущенного PHP-скрипта, это позволит как минимум настроить любой параметр (в т.ч. таймауты, т.к. подобных настроек сделать на хостинге скорее всего нельзя), либо вообще избавиться от понятия "таймаутов" (в случае использования ПО для работы с БД).

    Альтернативный вариант - напишите скрипт, который будет загружать, например по 1000 строк из Excel'я, после чего генерировать ответ (HTML-страницу), которая будет запускать этот же скрипт, с параметром "следующие 1000 строк" и так рекурсивно, до полной загрузки данных. При особом желании можно попытаться отслеживать текущее время выполнения скрипта и при приближении к порогу - соотв. генерировать ответ (как описано выше).

    P.S. Ещё один важный момент - вставка данных в режиме "1 INSERT много VALUES" обычно работает ощутимо быстрее, чем "1 INSERT 1 строка".
    Ответ написан
    Комментировать
  • Как проанализировать файл с данными?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Если Вы не собираетесь "городить огород" - то пишите пишите данные в БД, в последствии с ними будет куда удобнее (и быстрее) работать, в том числе, с помощью запрос(а, ов) посчитать кол-во тех или иных устройств, их процентное соотношение и т.п.

    "Построить диаграмму" можно достаточно просто с помощью Excel'я (и его подобий), предварительно выгрузив имеющиеся данные в этот формат. Если нет Excel'я - можно выгрузить данные в "Google Doc's" или в Excel-online, насколько я помню, там так же были аналогичные функции.

    P.S. Лично я - написал бы небольшой скрипт (например, на PHP), который бы делал несколько запросов в БД и на основе этих данных строил бы диаграмму в нужном мне виде (с помощью готовой библиотеки на CSS/JS).
    Ответ написан
    Комментировать
  • Php как обьявить абстрактное свойство?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Вот тут уже обсуждали очень очень похожий вопрос и ответ на него. Я думаю, что объявить "абстрактное свойство" - никак. Возможно Вам поможет либо "классическое" наследование, либо Трейты.

    Пример:
    trait Trait1
    {
        protected $x = 10;
    
        abstract public function y();
    }
    
    class Class1 {
        use Trait1;
    
        public function y() {
            print $this->x;
        }
    }
    
    $class1 = new Class1();
    $class1->y();
    Ответ написан
    Комментировать
  • На что обратить внимание JavaScript разработчику при изучении PHP?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Хочу расширить навыки
    Я думаю, прочтение вот такой книги (хотя бы частями или частично) позволит Вам расширить свои навыки как конкретно в PHP так и в веб-разработке в целом. Лично на мой взгляд - написана очень неплохо и в основном "по делу".

    Знания "синтаксиса" ("нового языка") - особой ценности из себя не представляют, гораздо важнее иметь глубокое понимание максимального кол-ва процессов и механизмов с которыми вы так или иначе работаете...
    Ответ написан
    2 комментария
  • Как установить php 5.2.6 на Ubuntu 18.10?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Попробуйте поставить из PPA, один из вариантов описан тут.

    Вариант про "исходники" уже озвучили выше.

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

    P.S. Насколько я помню, в бубунтах PHP ставится либо: sudo apt-get install php5.2 либо sudo apt-get install php52, т.е. без указаний 3-ей цифры в версии (возможно я ошибаюсь).
    Ответ написан
    Комментировать
  • Элегантное решение для проброса значений в функциях php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Можно как-то элегантно избавится от if else в данном контексте?

    Можно:
    Заменить свой
    if ($value)
      $this->saver->save($name, $value);
     else
      $this->saver->save($name);

    на
    $value ? $this->saver->save($name, $value) : $this->saver->save($name);
    но как верно подметил г-н DevMan, - "огороды лучше не городить", т.к. код в первую очередь должен быть читаем и понятен, а уже после - "красив".

    P.S. И, да, ещё один важный момент. В современных стандартах принято оборачивать тело циклов и условий в фигурные скобки, даже если оно состоит из одной строки...
    Ответ написан
    Комментировать
  • Почему не работает require в open server?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Почему не работает require в open server?
    Скорее всего по тому, что какой-то косяк с путями... Попробуйте так: include __DIR__.'mysql/mysql.php';
    Ответ написан
    Комментировать
  • Как обрезать белый фон средствами php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Кажется есть... Первая и вторая.
    Ответ написан
    Комментировать
  • Как добавить тег в первое значение foreach?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как добавить в div еще один class, но только для первой картинки?

    Простой вариант:
    1. Над foreach'ем создать переменную булева типа или просто счётчик
    2. Присвоить ей по умолчанию значение, например, false или 0.
    3. В foreach'e проверять значение переменной, если оно == flase или == 0 => делать что-то (добавлять класс например)
    4. В конце foreach'а изменить значение переменной на true, увеличить её значение на 1 или что-то в таком духе.

    А ещё можно попробовать использовать цикл for, с "ествественным" счётчиком.

    P.S. Есть масса других вариантов, например, создавать переменную в конце foreach'а в начале проверять на её существование и так далее, но смысл везде будет примерно одинаковый и решение в большей степени зависит от Вашей фантазии и установленных правил написания кода.
    Ответ написан
    Комментировать