Ответы пользователя по тегу PHP
  • Как сделать проверку по email, не создавая доп таблиц?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    типа взять id пользователя, время его регистрации, еще какие параметры, перемешать, зашифровать через openssl к примеру и потом при запросе расшифровать и собственно найти такого пользователя?

    Ну пробуйте.
    Ответ написан
    Комментировать
  • Как сделать постоянные запросы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ratchet + websockets + fallback в long pooling (все на базе reactphp сделать и связать с основным приложением через очередь сообщений на rabbitmq/activemq/zeromq/resq/etc либо своими кастылями с базой данных). То что у вас отправлялось всем пользователем это лично ваша проблема - значит вы не разобрались как работать с websockets. У вас соединения должны быть привязаны к пользователям.
    Ответ написан
  • Почему выдаётся не та ошибка при пользовании simple_html_dom?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    учимся использовать xdebug/phpdbg/var_dump.

    И какая из этих строк 1112? может проблема внутри метода add? Вообще не видя кода можно просто сидеть и гадать
    Ответ написан
  • Как лучше всего работать с данными массива?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вы хотите оптимизировать выборки из массивов? Изобрести индексы для массивов? (можно реализовать механизм индексации с бинарным поиском или использованием хэшмэпов для примари кеев).

    Если этот массив взялся из базы данных то и выборку стоит в ней же делать.

    в противном случае запись массива в базу и выборка там будет медленнее тупого перебора в лоб. Только если данные там уже и останутся и вы будете эту таблицу реюзать будет профит.
    Ответ написан
    3 комментария
  • Как оптимизировать класс PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    мне кажется стоит разобраться зачем вообще эта строчка там нужна (реально не понимаю, это же метод класса, зачем там брать имя себя же? Оно же вам уже известно...

    Ну а так - нет, такого ничего нету, ни магических констант - ничего. Если хочется извращений - можно через __call попробовать разрулить (сделать все методы приватными) но имхо лучше вообще от этой строчки избавиться.

    От дублирования кода нормально избавляться вынося онвый в приватные методы.

    p.s. пожалейте людей, код класса ни за что не показывайте.
    Ответ написан
    5 комментариев
  • Как сделать скриншот страницы html?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    phantom.js на сервере, который будет рендрить ваши странички и генерить превьюшки. html2canvas.js штука забавная, и пожалуй единственная альтернатива (ну еще wkhtmltoimage), но не слишком надежно это дело делать на клиенте.
    Ответ написан
    Комментировать
  • Когда создавать бд?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    первый вариант - ручной. Все будет хорошо ровно до момента деплоя новой версии или увеличения команды разработчиков с одного до двух.

    второй вариант правильно называется - миграции. И так я бы вам рекомендовал и делать, все изменения в базе данных оформлять в виде миграций.

    Заметьте, оба варианта ни как не затрагивают сам код приложения.
    Ответ написан
    Комментировать
  • SATA или SSD для сайта?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    С вашей посещаемостью я бы выбрал вариант с большим объемом RAM. Нагрузка на HDD/SSD будет не такой уж и большой, главное что бы кеширование было нормально настроено.
    Ответ написан
    2 комментария
  • Что делать, когда растет база данных?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    займитесь оптимизацией запросов, расставьте индексы и проблема исчезнет.
    Ответ написан
    4 комментария
  • Регулярные выражения и/или как описать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    /^\-1\.2964505(\?pagereq=(\d+))?$/Ui
    ideone.com/vlDAVn
    Ответ написан
    Комментировать
  • Как отправить get запрос, без ожидания ответа (php)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если у вас узкое место именно получение данных - можно вооружиться multicurl, и тогда мы можем паралельно делать несколько запросов. Обрабатывать результаты запросов всеравно придется последовательно, так что профит будет только в случае, если get запросы отнимают большую часть времени работы скрипта.

    очереди задач. Скрипт добавляет на обработку задачи в очередь (так как у вас sharer хостинг, думаю штуки типа rabbitmq отпадают, остаются только очереди в базе данных или в reddis, смотря что у вас есть), несколько скриптов обработчиков забирают задачи из очереди и собственно работают. Правда если у вас нельзя выполнять и cli скрипты c set_timeout(0), то тогда этот способ не будет нормально работать.

    ну и уж тем более раз уж речь о shared хостинге, взять что-то типа pthreads или pcntl так же не выйдет. Если выйдет - можно по настоящему распаралелить приложение и получить ощутимый профит.

    JS так же делает это все дело не совсем асинхронно, просто в промежутке между отправкой и получением запроса вы можете что-то делать, но делаться все будет всеравно последовательно, никакого паралелизма из коробки, но там нету и ограничений по времени. Да и не думаю что если у вас есть возможность установить node.js то будет какая-то проблема и на php реализовать.
    Ответ написан
    Комментировать
  • Как получить ссылку на загрузку архива?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Да, убрать выставление заголовоков content-type и Content-disposition, убрать readfile и заменить на простенький шаблончик со ссылкой на файл.
    Ответ написан
    Комментировать
  • Что такое deplister в php 5.6?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    /* This little application will list the DLL dependencies for a PE
    * module to it's stdout for use by distro/installer building tools */
    Ответ написан
    3 комментария
  • Как правильно настроить VMware c Ubuntu Server для PHP разработки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    можете вообще только с WiFi работать, это как бы вообще не причем.

    Если хост система у вас винда, так же рекомендую настроить host-only адаптери и samba, так как шаред фолдеры в том же вируалбоксе дико медленные и глючат периодически при частых изменениях.
    Ответ написан
    Комментировать
  • Как передать команду из PHP в NodeJS и наоборот?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вам нужна шина данных. Вооружитесь очередями сообщений (ZeroMQ, RabbitMQ, ActiveMQ и т.д.)
    Ответ написан
    Комментировать
  • Как настроить Symfony2 в Netbeans, на Ubuntu?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    google translate:

    Измените разрешения либо каталога "app/cache" или "var/cache", так что веб-сервер может написать в нее.
    Измените разрешения либо "app/logs/" или "var/logs" каталога, так что веб-сервер может написать в нее


    даже с таким мерзким переводом думаю должно быть понятно что у PHP нету прав писать в эти директории.

    Кривое решение - поставить chmod с разрешением на запись для всех.

    Нормальное решение - настроить PHP или web-сервер что бы тот запускался от имени пользователя. Более того, крайне рекомендуется делать именно так. На продакшене обязательно либо через mpm_itk (в случае если у вас apache) либо через php-fpm в случае чего-то другого (nginx, lighttpd, etc)

    Бонусное решение - отказаться от apache на время разработки и использовать встроенный в php сервер. Тогда php будет выполняться от имени пользователя всегда и каких-то танцев не потребуется. Не помню с какой версии, но у symfony standard edition есть из коробки команда:
    $ app/console server:run
    которая запускает сервер по адресу 127,0,0,1:8000. Это очень удобно при разработке. Просто ставите PHP и можно уже работать.
    Ответ написан
    1 комментарий
  • В PHP не получается вывести список городов группированный по первой букве?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Все дело в юникоде и в том как PHP с ним работает. В частности когда вы получаете первый символ строки, вы забираете только его часть (так как это мультибайт стринг и все такое).

    Для того что бы все корректно работало стоит использовать mb_string. Так же в php есть опеределнные нюансы в плане хранения ассоциативных массивов, в частности кодировка ключей.

    Для того что бы проблем небыло совсем, стоит отказаться от использования ассоциативных массивов для этой задачи. Пример:

    function build_index($words)
    {
            $index = [];
            $current = null;
            foreach($words as $word) {
                    $firstLetter = mb_strtolower(mb_substr($word, 0, 1, 'utf-8'), 'utf-8');
                    if (!$current || $current['letter'] !== $firstLetter) {
                            $index[] = [
                                    'letter' => $firstLetter,
                                    'data' => []
                            ];
                            $current = &$index[count($index)-1];
                    }
                    $current['data'][] = $word;
            }
    
            return $index;
    }


    Демо: ideone.com/nUSWZ3
    Ответ написан
  • Как в twig разбить список на группы по Х записей?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Есть три варианта:
    1) кастомная функция. Все просто, на вход массив, на выход - html. самое простое решение, но оно разовое. То есть либо вам внутри функции придется извращаться с шаблонами и прочим, либо просто захардкодить часть HTML внутри функции, что не есть гуд. В случае смены разметки придется лесть и править функцию. Это такое вот решение влоб.

    2) макросы с циклами и ифами внутри. Плюсы - просто реализовать, все в шаблонах. Есть возможность для реюза в будущем, проще менять разметку. Минусы - чуть чуть сложнее сами темплейты.

    3) самый крутой как с точки зрения производительности так и реюзабельности - написать свой новый тег, что-то типа index_table или что-то в этом духе, внутри которого определить что-то типа шаблона по которому все это дело отрисовывать. Плюсы: реюзабельно, можно оформить в виде экстеншена и оставить потомкам. Так же так как все будет в итоге компилиться в PHP код. все будет работать очень быстро. Минусы - очень сложно реализовать относительно других вариантов. Зато разберетесь с Twig и может выйти прикольно.
    Ответ написан
    Комментировать
  • Как сгенерировать pdf на основе ресурсов в modx revo?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    хватит заниматься дуростью, используйте phantom.js или wkhtmltopdf. А крестики скорее всего изза неверных путей к картинками или что-то в этом духе. Посмотрите какой html вы скармливаете.
    Ответ написан
    Комментировать