Ответы пользователя по тегу PHP
  • Как сделать дать права на chmod() через PHP под докером?

    chmod - дает флаги доступа владельцу, группе и остальным, например 777 или 555

    но естественно, что любой левый юзер не может на чужие файлы разрешения ставить, для этого надо владельца назначить у файла того, от которого php запускается, а от кого я не знаю, это уже как вы там у себя накрутили, вы же администратор своего проекта и вероятно имеете на то компетенции, если нет - привлекайте девопсов чтобы вам всё настроили.

    Смотрите что такое права доступа и что такое chown/chmod...
    Ответ написан
  • Как правильно задать таймаут запроса в cURL?

    curl_setopt($cl,CURLOPT_TIMEOUT,90);
    Ответ написан
    Комментировать
  • Как перенести дату из excel в mysql?

    Библиотека уже не поддерживается, вместо нее PhpSpreadsheet от тех же разработчиков.
    Я этот PHPExcel сам патчил сто раз у себя, то стили ячеек не применяются то еще что.
    44114 это явно всего 12 часов с начала Unix Time, не надо тут date использовать, это не таймштамп, это экселевый формат.

    Используйте что-то типа
    ->getCell('I5')->getFormattedValue()
    Ответ написан
    Комментировать
  • В 2021 году чревато ли устройство на работу где Zend Framework?

    Отстанете 100% на любой работе, если не будете на досуге смотреть по сторонам, хотя бы часик в неделю надо тратить чтобы что-то почитать, слепить что-то для души а не для работы.
    Ответ написан
    Комментировать
  • Где можно посмотреть список из 50-100 наиболее используемых встроенных функций / методов в языке php?

    Лучше гуглить к примеру "array sort php" и смотреть списочек функций, потом еще в каждую заходить и смотреть что на вход, а что на выход и что поменялось в последней версии, с опытом все наизусть можно знать да и к примеру бесплатный редактор VSCode имеет подсказки, стоит только поставить PHP Intellisence
    Ответ написан
    Комментировать
  • Как создать мгновенно самоперезапускающийся скрипт php?

    Я делал на PHP демоны, которые месяцами работали, но изначально да, были проблемы, у меня к примеру очередь мониторил скрипт и как только ловил входящее сообщение - начинал обрабатывать, срабатывал таймаут в mysql, пришлось написать функцию для проверки соединения и если его нет то реконектиться, эта функция только в начале одной обработки запускалась...
    Еще всякие вещи типа бесконечных циклов, хотя бы на 500 мс нужно делать задержки...

    А вообще на bash можно запилить скрипт, который грепает PID в выхлопе ps -aux и если нет такого процесса, то запускать, а при первом запуске сохранять в файлик какой-то типа > script.pid...
    Ответ написан
    Комментировать
  • Mysql + PHP docker скорость?

    @PavelBelyaev Автор вопроса
    Нашел испытания от перконы, реально есть такое как оверхед сетевой, даже если все на одном компе... Мои тесты конечно накладывают еще производительность вычислений, и вероятно у меня с базой не столь много работает сколько обработки, генерация всяких xml... Если бы я только с базой работал, то скорей всего получил аж трехкратное замедление... https://www.percona.com/blog/2016/02/05/measuring-...
    Ответ написан
    Комментировать
  • Setcookie не работает, в чём проблема?

    Для начала уменьшить количество запросов SELECT `id`,`email`,`tel` FROM `users` WHERE email=... OR tel=...
    if ($id>0) kokoko

    пользуйтесь стандартным session_start();

    и записывайте в $_SESSION все данные по текущему юзеру, в т.ч и is_auth is_admin итд...
    Ответ написан
  • Изучил PHP, но как применить знания на пракитке не знаю. Что мне делать дальше?

    Слепите для начала простейшее приложение, возьмите twitter bootstrap или uikit чтобы много не верстать, а только бэкендом заниматься, возьмите JQuery чтобы с кроссбраузерностью костыли не лепить...
    Сделайте например кредитный калькулятор - в несколько полей указываешь параметры, кнопку жмешь и генерирует табличку с платежами, чтобы определиться с суммой платежа возьмите формулу аннуитетного платежа...

    Дальше можете сделать блог, поставьте на виртуалку тот же Ghost, посмотрите как все устроено - в админке список постов, по любому кликаешь и редактор открывается, а на внешней части тоже список, только выводятся они с пагинацией. Для редактора возьмите Editor.md или CKEditor или TinyMCE, попробуйте сделать загрузку картинок, тут вам понадобится небольшое знание SQL...

    Попробуйте сделать бота для вк, заводите группу, получаете ключик, все, лонгпулом получаете сообщения, кидаете на них ответ, тут придется вникнуть в curl.

    Попробуйте сделать парсер товаров и цен вашего любимого магазина, тут можете поиграться с регулярными выражениями.

    PHP это просто как инструмент, почти как паскаль, тут есть функции, циклы, переменные и все такое.
    Отдельно почитайте про обработку денег, чтобы 2.5+2.5 не получалось 5.0000001.

    Когда наиграетесь с чистым PHP, освоите всякие RabbitMQ, MySQL, Curl, Regexp, с нормализацией БД разберетесь, с индексами бд, типами данных, связями, поиграетесь с классами, автозагрузкой, наследованием и всяким таким, то придумайте какой-то проект для себя чтобы вечерком поиграться, берите например Yii, чтобы от кода к логике пойти, сделайте например интернет-магазин, пока особо можно не париться.
    Ответ написан
    Комментировать
  • WordPress не может создать папку, что не так?

    Попробуйте создать файлик например в корне test.php и в нем
    <?php
    echo exec("id");


    У вас вероятно не www-data пользователь от которого работает сервер, а какой-то свой ограниченный типа user1.group2
    Ответ написан
    7 комментариев
  • После перехода на php 7.1 появилась ошибка A non-numeric value encountered?

    Попробуйте вот так
    //$m[$i] = round($m[$i] / (int) 100 * $maxLevel, 1);
    $m[$i] = (((int) $m[$i]) /(100 * ((int) $maxLevel)));
    $m[$i] = round($m[$i], 1);
    Ответ написан
    1 комментарий
  • Можно ли сделать include в функции php?

    @PavelBelyaev Автор вопроса
    Проверил только что, подгруженные внутри функции классы могут объявляться вне функции, но вот с переменными такое не пройдет, их надо в глобальную видимость объявлять.
    function LLL()
    {
    include PRIV.DS.'classes_crm.php';
    }
    
    LLL();
    
    $crm_cl = new ShopCRM;
    Ответ написан
    Комментировать
  • Linux скрипт для php, как написать?

    У меня много демонов крутится на PHP и между собой они общаются обычно через RabbitMQ (один другому задания шлет), запуск демона происходит вот так

    #!/bin/bash
    s_path="/bot1/sms/"
    PIDFILE=$s_path"daemon.pid"
    
    RUN="setsid /bin/php  /bot1/sms/daemon.php -a -b -c 10"
    LOG=$s_path"log.txt"
    SERVICE_NAME="MY DAEMON PHP"
    
    
    
    s_start() {
    
    test -f $PIDFILE && echo "$SERVICE_NAME is started" && exit
    
    echo -n "Starting $SERVICE_NAME: "
    `$RUN > $LOG & echo $! > $PIDFILE & disown -a` && echo 'ok' || echo 'error'
    
    }
    
    s_stop() {
    test -f $PIDFILE || echo "$SERVICE_NAME isn't started"
    test -f $PIDFILE || exit
    
    echo -n "Stopping $SERVICE_NAME: "
    kill -9 $(cat $PIDFILE) && echo 'ok' || echo 'error'
    rm $PIDFILE
    }
    
    
    case $@ in
         start)
              s_start
              ;;
         stop)
              s_stop
              ;;
         restart)
              s_stop
              s_start
              ;;
         *)
            echo "Use start|stop|restart"
            ;;
    esac


    В скрипте прописан путь до папки с демоном, туда при старте записывается pid процесса, по этому pid процесс убивается, конечно это такое решение для скрипта, как молотком по голове, ну ничего критичного не делается обычно, если убит скрипт и не успел что-то доделать, то при следующем старте доделает...
    Весь выхлоп скрипта в лог закидывается, но можно и в /dev/null отправить.
    Ответ написан
    Комментировать
  • Как вызвать статический метод в другом классе?

    Всё верно, статические методы можно вызывать без создания экземпляра класса в формате класс::метод()
    Из статическим методов нельзя вызывать $this, еще при вызове статических методов не нужно глобально переменную класса объявлять через global $class_obj.
    Ответ написан
  • Почему при запросе cURL возникает ошибка, а при file_get_contents нет?

    У вас в системе корневые сертификаты для curl не залиты, самое простое решение - принимать все сертификаты без валидаци...
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    Ответ написан
    1 комментарий
  • Очистка скрипта php при обработке изображений?

    Самым простым решением будет SQL_CALC_FOUND_ROWS + LIMIT, например, LIMIT 0 10 (c нулевой строки и получить 10), а дальше узнаете сколько там нашлось записей до лимита через запрос
    SELECT FOUND_ROWS()
    узнаем сколько там записей, хотя проще COUNT(*) получить, если вы тупо все записи хватаете без выборки по условияю (обработан или нет).

    Смысл в том, что вы должны из базы брать например по 10 записей, обрабатывать, а потом следующие 10, например
    LIMIT 10 10
    LIMIT 20 10
    LIMIT 30 10
    небольшой пачкой брать по 10 записей, обрабатывать и потом следующие 10, зная сколько всего записей итерацию сделайте типа как постраничный вывод товаров, посмотрите как постраничная навигация делается на сайтах, так и делайте
    Ответ написан
    Комментировать
  • Как использовать анонимные функции в php?

    $anofunc =($A) use (вместо глобал передавать и самыу функцию можно ссылкуолй)
    {
    return $a;
    }; //ТУТ ВАЖНО ;
    
    $a("привет);
    Ответ написан
    Комментировать
  • Как кешировать PHP страницу сайта?

    Почитайте про буферизацию вывода, включаем буфер, сохраняем весь выхлоп в самом конце и отдаем на экран, куда и как сохранять надо смотреть от специфики, например md5 от url или id страницы выводимой
    Ответ написан
    Комментировать
  • Как происходит выделение памяти?

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

    Изначально ее выделяется с запасом, часто даже скрипт отрабатывает и ни разу не увеличивает память под себя, а так можете попробовать memory_get_usage(1) там вообще будет стабильно 2 мегабайта, если что-то жрущее не запустить, то скрипт не запросит даже памяти себе еще.
    Ответ написан
    Комментировать