Задать вопрос
Ответы пользователя по тегу PHP
  • Как отладить медленное выполнение запросов между docker-контейнерами и основной системой, и между docker-контейнерами?

    @rPman
    примите как данность, docker - дитя linux, и на windows его портировали как получится, не со зла, а исключительно из-за того что windows сложная система и песочницу там запилить реально не просто.

    разработчикам, а точнее девопсам, реально проще живется на linux, особенно когда работаешь с открытым кодом (а подавляющее большинство библиотек так или иначе это foss), советую не мучиться наконец и начать работать в linux

    майкрософт это давно понимает и поэтому запилили wsl, ибо это способ хоть как то удержать главное, что определяет, на какими операционными системами будут пользоваться люди в конце концов - developers developers developers!
    Ответ написан
    Комментировать
  • Как проверить ссылку RSS?

    @rPman
    если ссылку спрашивать у пользователя, то он сам дурак, если даст неверный тип контента

    с высокой вероятностью в ссылке будет слово rss (либо type=rss, так многие cms-ки экспортируют свои статьи туда либо .rss) но само собой никто ничего не гарантирует, никаких стандартов на это нет

    как правильно - запрашиваешь по ссылке заголовки, без контента, и смотришь Content-Type должен быть тип text/rss+xml или application/rss+xml, редко бывает text/xml или application/xml но тут дальше только по содержимому
    Ответ написан
    Комментировать
  • Как упростить данный скрипт, слишком долго выполняется?

    @rPman
    первый вариант - генерируй sql скрипт вида
    select ... from ... where id in (1,2,3,4,5,6....)
    у этого способа ограничение на количество записей в скобках кажется 1000, так что в цикле генерируй (чуть чуть подправить твой скрипт)

    второй вариант - идеологически более верный, создаешь временную таблицу в базе с одной колонкой id, заливаешь в нее твои идентификаторы, и затем одним запросом получаешь весь список записей
    select ... from temp_ids a left join table_1 b on a.id=b.id
    Ответ написан
  • Как в fputcsv вывести вложенный массив в массиве?

    @rPman
    Если данные будут смотреть люди исключительно глазами (и в лучшем случае в экселе фильтрацию по подстроке будут делать), до достаточно список в ячейку разместить объединив строки с помощью implode, с каким нибудь разделителем, например ';' или '|' (очень редко используется, коллизий будет гораздо меньше, что даже можно считать машиночитаемым)

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

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

    Советую вспомнить хотя бы ms access (если уж закупили офис и на что то другое тратиться нет желания и сил), одно время mdb файлы даже как файлы экспорта данных и даже формат хранения использовались, удобно, машиночитаемо, компактно и интерфейс прямо на рабочем столе.

    Сейчас это не имеет значения, почти для любой базы данных есть удобные инструменты, так что передавать можно к примеру в sqlite формате, или sql, или хотя бы в csv файлах (жуть как неудобно, но страдальцы могут хотя бы без каких либо знаний открыть их в любимом экселе)
    Ответ написан
    Комментировать
  • PHP ругается на ошибку в Curl, куда копать?

    @rPman
    CURLFILE большими буквами? почему у тебя на это не ругается? надо CURLFile
    Ответ написан
  • Как simple_html_dom разбить в массив?

    @rPman
    не смотрю что там внутри у тебя, просто знай что в результате find() ты получаешь массив объектов, к которым так же можно сделать find

    почти наверняка тебе достаточно просто корректно составить css селектор
    Ответ написан
    Комментировать
  • Как написать бота локально если нужен SSL?

    @rPman
    Никак, ssl сертификат должен быть известен серверам viber, им твой самописный неизвестен.

    Можно попытаться сэкономить, настроив http прокси на том же nginx, в этом случае требования к серверу будут мнимальные, мало того всякие cdn типа cloudflare дают бесплатно как сертификат так и предоставляют простейшие прокси
    Ответ написан
    Комментировать
  • Как исправить ошибки php mysql?

    @rPman
    нужно смотреть что там за сообщение об ошибке, вполне возможно /usr/lib/php/20200930/mysqli.so файл нулевой длины и его достаточно будет удалить вручную

    удаляй все что хоть как то конфликтует, включая их зависимости
    apt purge ...

    если что можно удалять вручную с помощью dpkg игнорируя зависимости но в конце концов порядок нужно восстановить чтобы apt autoremove -f отработало и dpkg-reconfigure -a тоже

    p.s. почему у тебя такой странный путь?
    поэтому вместо debian я ставлю ubuntu, список и поддержка backports для кучи полезных приложений там заметно полнее и все за порядок удобнее
    Ответ написан
  • Как получить данные формы и отправить дальше?

    @rPman
    Старый и идеологически уже не правильный способ, при формировании кода страницы 2 в значения value тегов input можно вставлять значения, принятые со страницы 1 (глобальная переменная $_POST или $_GET), но при этом необходимо пропустить эти данные через htmlspecialchars а для данных вне атрибутов, например для select или textarea, - более мощную htmlentities, но в любом случае с осторожностью, например \n там для html опций не конвертируется (а для xml да но другие нюансы), советую полистать комментарии под этими функциями.

    Если из страницы 1 нужно было передать данные полей, которых нет на странице 2 но нужны на странице 3, то использовали скрытые input type=hidden

    Очевидно, что это максимально идиотский и неэффективный метод передачи данных между страницами, и существовал он исключительно потому, что браузеры не имели нормального скрипта в стандарте, но теперь есть javascript, есть куки, есть локальное браузерное хранилище, есть ajax, есть вебсокеты, любой из этих технологий достаточно чтобы не городить описанное мной многоуровневое убожество.
    Ответ написан
  • Как в массив вставить цикл foreach?

    @rPman
    можно использовать array_map, на вход подаешь $_GET[CART] и функцию, обрабатывающую каждый элемент (то что у тебя внутри foreach)

    'items' => array_map(function($v){...},$_GET[CART])
    Ответ написан
    Комментировать
  • Каким образом почистить и перезаписать большой файл с номерами телефона?

    @rPman
    20т записей это маленький файл, большой это миллиарды

    русские номера это начинающиеся на +7 или 8
    еще есть местные городские номера, без кода города, вот что это за номер 58510350

    ты ж программист (судя по вопросам), берешь свой любимый javascript, берешь nodejs и пишешь в 4 строчки фильтр
    Ответ написан
    Комментировать
  • Exec (или ffmpeg) игнорирует get параметр. Как заставить его увидеть?

    @rPman
    Из консоли у меня всё работает, НО там тоже была загвоздка с ссылкой и её пришлось указывать в двойных кавычках (одинарные не принял)

    так поставь их:
    exec("ffmpeg.exe -rtsp_transport tcp -i \"$url\" -c copy -map 0 -t 10 out2.mkv 2>&1", $output, $return_var);
    Ответ написан
    Комментировать
  • Где в сети можно найти php коды для отладки?

    @rPman
    Правильное создание забагованного кода это отличный способ обучаться.

    Задавайся вопросом, как ведет себя та или иная функция когда на вход подаются неправильный данные. Пустые, не того типа, слишком большие, закрытые дескрипторы, писать в заблокированные файлы, проблемы с сетью в той или иной функции типа работы с базами данных или ожидании post данных от пользователя и т.п.
    Ответ написан
    Комментировать
  • Как авторизоваться на сервисе проверки чеков?

    @rPman
    у них какая то проблема с сертификатом
    vxh5ejgygibsv896odmn5lk7yn0.png
    Ответ написан
    Комментировать
  • Как в строке найти любой первый непечатный символ средствами php?

    @rPman
    preg_replace (или если надо utf8 к примеру то mb_ereg_replace )
    примерно так
    preg_replace('/[^a-z0-9\n\r ,\.]/','',$str)

    в регулярке указываешь списком символы, которые надо оставить, символ ^ переворачивает список на 'все кроме указанных'
    Ответ написан
  • Как распарсить такие данные?

    @rPman
    в php готовых инструментов нет, может отдельно кто писал

    parse_ini_str мог бы разобрать такое но без поддержки массива item[x] так же нет поддержки вложенных полей xxx.yyy.zzz

    так что ручками в цикле, построчно, либо регуляркой либо preg_split выделяешь сначала =, затем все что между . и в цикле набираешь поля в объекты
    Ответ написан
  • Почему не выполняется пользовательская функция?

    @rPman
    Попробуй ccxt там поддержка больше сотни бирж (криптовалютных) в частности для твоего binance поддержка торговли спот точно поддерживалась, несколько месяцев назад когда я смотрел, фьючи глючили (еще не обновили поддержку в библиотеке и я пользовался nodejs от jaggedsoft либой).
    Ответ написан
  • Почему происходит такое с WebSocket?

    @rPman
    Можно ли как-то это поправить? Или есть альтернатива может?

    WebWorker должен работать не зависимо от того, активная вкладка или нет
    Ответ написан
    Комментировать
  • Как выгрузить список разделов неограниченной вложенности из бд?

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

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

    Если нужно сгенерровать дерево без не раскрытых ветвей, то где то надо хранить какая ветвь выбрана (раскрыта) и пропускать генерацию вывода для не раскрытых.

    Часто генерируют все дерево но для не раскрытых веток указывают стиль - display:none, меняя его при перемещении пользователя по дереву.
    Ответ написан
    Комментировать
  • Как посчитать символы после точки и до единицы?

    @rPman
    Задача - подсчет значимы цифр после десятичной запятой в строковм представлении.
    Интересно, у меня впереди маячит решение этой маленькой задачи, но только максимально эффективно на c++ ибо данных много.

    Пока решение на основе работы со строкой:
    * убираешь все что не цифры и не точка
    * проверяешь наличие точки (число может быть целым), если нет - ответ 0
    * если есть точка, начинаешь считать нули с конца, как только обнаружишь не ноль
    * продолжаешь двигаться справа на лево до символа точки, считая уже в другую переменную, возвращаешь эту переменную

    p.s. осторожно, данный алгоритм на php может оказаться медленнее других, менее адекватных с первого взгляда.

    Например, в цикле делишь на pow(10,x) берешь intval и снова умножаешь на этот же pow, начиная с максимально большого значения x (для double это где то 15, для криптовалютных бирж тебе скорее всего нужно 8 или 9) и уменьшаешь его до тех пор, пока полученное значение не станет не равно изначальному. Очень может оказаться что деление в php сравнимо по скорости работы со строками
    Ответ написан
    Комментировать