Задать вопрос
Ответы пользователя по тегу PHP
  • Как произвести деление c остатком на php и получить правильный результат?

    @rPman
    Число верное, это функции вывода типа echo так делают.
    Натрави на это число в экспоненциальной записи функцию number_format
    Ответ написан
    1 комментарий
  • Как в PHP из одного потока(сессии) вызвать скрипт другого потока(сессии) скрипт другого клиента?

    @rPman
    Используй семафоры, там есть инструменты по отсылке сообщений между процессами машины, на linux всегда включена, на windows сборках к к сожалению нет

    Иначе реализуй на основе сокетов, тогда будет пофиг на какой машине в кластере работает процесс
    Ответ написан
  • Как передать (экспортировать/импортировать) переменную из javascript в php?

    @rPman
    Если переменная нужна в каждом запросе в течении некоторого времени и небольшая по размеру, то можно сохранить в сессионных куках setCookies а в php $_COOKIE[имя]
    Ответ написан
  • Какое API можно поднять для работы с БД?

    @rPman
    Когда то, там где это было не критично, бакэенд я делал в виде примитивной прослойки для базы данных и хранения sql запросов, т.е. клиент в запросе выдавал идентификатор запроса и список его параметров именованным массивом, а сервер возвращал табличку как есть, код на php чуть ли не десяток строчек плюс список sql запросов. Если запросов за раз бывает много, ввести возможность отправки их пакетом....
    мне не требовалось но я помню думал над таким
    , что когда нужно выполнить серию запросов, пользующихся возвращаемыми данными друг друга, можно использовать перменные, указывая вместо значений идентификаторов их имена в каком-нибудь формате, пронумеровав и поименовав их
    Например два запроса - FIRST:select b_id from table_a where id=123 и второй SECOND:select name from table_b where id={FIRST:b_id} тут в качестве параметров будут переданы FIRST:[id:123] и SECOND:[id:"{FIRST:b_id}"]

    Немного сложнее с запросами на модификацию, сами запросы не сложные но нужно будет как то описывать ограничения, что можно к примеру удалять или править а что нет, в общем под задачу, но точно так же как и с запросом данных на чтение, бакэнд выступает исключительно простой прослойкой к вызовам методов sql драйвера (понятно что до вызовов по методам доходить не стоит, т.е. к примеру после вставки записей insert можно тут же вызвать lastInsertId и вернуть его в ответе, а так же проверить на ошибки и собрать подробности (запихнуть в лог и выдать клиенту)
    Ответ написан
    Комментировать
  • Как уберечься от слишком частых ajax запросов?

    @rPman
    websocket

    Сервер должен сообщать об обновлениях данных клиентам, это наилучшее решение как с точки зрения ресурсов и интернета так и по разработке.
    Ответ написан
  • Почему не работает итерация?

    @rPman
    &$item - убери &, так же не нужно делать unset (а в твоем случае еще беда ты пытаешься в массиве сохранить указатель на item и тут же его удаляешь), у php хороший автосборщик мусора
    return $childs[0] ты возвращаешь нулевой элемент собранного массива а остальное очищается? а он там есть? тут может без [0]?
    Ответ написан
  • Как добавить исключение в php скрипт?

    @rPman
    Сразу после вызова snmpget проверь $printer_snmp_counter на false, если да то пропусти дальнейшие шаги и выводи ошибку или что тебе там надо делать
    Ответ написан
    Комментировать
  • Возможно ли иметь на одном сервере Flask и PHP?

    @rPman
    Да, можно в настройках приложения flask указать слушать входящие по localhost адресу (или если на сервере есть еще подсети, к примеру локальная сеть или vpn то слушать там)
    app.run(host='127.0.0.1')
    так же как альтернатива, настроить фаервол
    Ответ написан
    Комментировать
  • Освобождается ли память?

    @rPman
    в куче процесса освобождается, а вот для операционной системы уже не факт
    можно попросить php задуматься об освобождении освободной памяти по раньше, выполнив gc_collect_cycles
    Ответ написан
  • Как обойтись без бесконечного цикла?

    @rPman
    Бесконечный цикл все равно будет, либо ты его напишешь либо его организует библиотека (какой-нибудь асинхронный фреймворк типа react, если что твой ответ можно найти в нем).

    В каждом конкретном случае реализовывать нужно будет правильно по своему

    С часами все просто - нужно не раз в секунду проверять время, а взять самый короткий интервал и вычислить, сколько до него ждать (время действия минус текущее время) и просто одной командой выставить sleep.
    Ответ написан
    Комментировать
  • Как передать JS функцию из PHP в JavaScript в JSON массиве?

    @rPman
    Что бы ты не делал, передавать так и так тебе придется 'строки', между php и javascript сеть, куча прослоек и протоколов.

    php выполняется на сервере, javascript на клиенте, между ними сеть и задержки в десятки миллисекунд, конечно из javascript можно с помощью ajax (или websocket) дергать php но это максимально не эффктивно, как минимум вызовы нужно собирать и выполнять разом пакетно, чтобы не тратить время на коммуникацию.

    p.s. с помощью wasm можно на клиенте запускать php но мне кажется такой бред не нужен
    Ответ написан
    Комментировать
  • Где применяются key(), next(), current()?

    @rPman
    Где применяются key(), next(), current()?
    а так же reset, end и другие, использут в случаях когда работу с элементами списка нужно вести либо вне главного цикла (т.е. он вывернут наружу и использовать классический foreach не удобно), или когда необходимо параллельно работать одновременно с несколькими циклами.

    Причина банальна - в php не существует переменной - итератор, указателя на текущий элемент массива key-value массива (в терминологии javascript объектом). Это значение зашито и хранится в самом массиве.
    Ответ написан
  • Как определить используемые методы сторонней библиотеки в приложении на PHP?

    @rPman
    Можно попытаться использовать статические анализаторы кода, а можно подключить библиотеку и проанализировать классы и методы в режиме выполнения.
    Смотреть тут, т.е. получаешь список зарегистрированных классов get_declared_classes и для каждого по имени запрашиваешь список методов get_class_methods, в догонку то же самое можно сделать с функциями get_defined_functions

    И помним, что очень часто разработчики библиотек почему используют динамические имена переменных и методов класса, настроив колбек на undefined method, в этом случае список таких методов узнать автоматически невозможно.
    Ответ написан
  • Как добавить html код в функцию php?

    @rPman
    Так как php - это язык шаблонов, без тега это html в чистом виде (точнее то что должен выдать сервер) то значит если закрыть тег ?> то все что до открытия следующего <?php будет выводиться

    т.е. например так:

    <?php
    /* блаблабла код на php */
    ?>
    <div class="modal fade" id="myModal_'<?=$item->id; ?>">
    ...
    <?php
    /* блаблабла код на php */
    ?>


    Подстановка значений (выражений) можно так же кусками на php делать или используя <?=expression ?>

    Все это работает корректно как инструкция, т.е. будут работать блоки { }, и обычно редакторы корректно расставляют подсветку синтаксиса для таких вставок
    Ответ написан
    Комментировать
  • Php как написать правильно echo script a href с переменной?

    @rPman
    Так как php - это язык шаблонов, без тега это html в чистом виде (точнее то что должен выдать сервер) то значит если закрыть тег ?> то все что до открытия следующего <?php будет выводиться

    т.е. например так:

    /* блаблабла код на php */ ?>
    <script>$('.title-link__element > svg').wrap('<a href='<?= $url ?>'></a>')</script>
    <?php /* блаблабла код на php */


    внимание, в месте где нужно вставить значение переменной $url я привел пример <?=$url ?> это будет работать если включить в php.ini опцию short-open-tag а так можно обойтись обычным echo

    Все это работает корректно как инструкция, т.е. будут работать блоки { }, и обычно редакторы корректно расставляют подсветку синтаксиса для таких вставок
    Ответ написан
  • Как сократить данный код?

    @rPman
    @$this->test[$id]+=$this->test[$id]<3?1:0;
    с выводом текста совсем коряво
    @$this->test[$id]+=$this->test[$id]<3?print("получил"):1-print("нельзя");


    но не надо так делать
    Ответ написан
    Комментировать
  • Проходить только один раз по ключу в Foreach PHP?

    @rPman
    Можно пересоздать массив, используя в качестве идентификатора то что должно быть уникальным (актуально если сами элементы не уникальны но нужно учитывать от их данных только часть, или же там не хранятся данные а только способ их получить и array_unique не прокатит)

    $tmp=[];
    foreach($data as $item)
       $tmp[$item->id]=$item;
    
    foreach($tmp as $id=>item)
      // do smthng
    Ответ написан
    Комментировать
  • Как вытащить переменную PHP из .php файла в .html-файл с помощью AJAX?

    @rPman
    на сервере php файл должен возвращать, к примеру json
    echo json_encode($my_cool_object);

    на клиенте, jquery должен делать запрос
    $.get('my_cool.php',function(data){alert(data);},'json')
    Ответ написан
    8 комментариев
  • Как спарсить сайт через PHP с более 30 тыс. ссылками?

    @rPman
    Варианты
    - запустить 10-100 своих парсеров параллельно и подправить код чтобы они брали следующую ссылку из какой-нибудь базы данных, учитывающей транзакции многопользовательского доступа или блокировки.
    - переделать парсер так же работающий в одном потоке, но использующий к примеру curl_multi, когда запросы к сайту идут асинхронно

    И помним, админу сайта может не понравиться 100500 запросов к их серверу, так как это похоже на ддос.
    Ответ написан
    Комментировать