• Как в PostgreSQL SQL запросом получить все триггерные функции в текущей бд?

    @vlad4ernyshov Автор вопроса
    Включив логи стало ясно, что pgAdmin4 тянет это дело вот таким запросом:
    SELECT
                pr.oid, pr.proname || '()' as name,
                lanname, pg_get_userbyid(proowner) as funcowner, description
            FROM
                pg_proc pr
            JOIN
                pg_type typ ON typ.oid=prorettype
            JOIN
                pg_language lng ON lng.oid=prolang
            LEFT OUTER JOIN
                pg_description des ON (des.objoid=pr.oid AND des.classoid='pg_proc'::regclass)
            WHERE
                proisagg = FALSE
                AND pronamespace = 2200::oid
                AND typname IN ('trigger', 'event_trigger')
                AND lanname NOT IN ('edbspl', 'sql', 'internal')
            ORDER BY 
                proname;
    Ответ написан
    Комментировать
  • Почему echo date('Y-m-d H:m:s'); из разных скриптов выводит разные результаты?

    Проблема часового пояса в настройках php или конкретного скрипта.

    Первое, выполните `php -i | grep timezone` в консоли. Там будет скорее всего UTC стоять. Если так, то вам нужно будет заменить на Europe/Moscow: `php --ini` покажет в консоли путь до php.ini файла, его нужно отредактировать (часто под рутом/администратором) строчку date.timeone = "Europe/Moscow"

    Второе, что может быть, часовой пояс где-то выставлен в самом скрипте, тут нужно поискать по коду команду https://www.php.net/manual/ru/function.date-defaul...

    Третье, может быть, вы эти скрипты запускаете разными php? Скажем, один в консоли, второй через веб-сервер (php-fpm)? Тогда у каждого из них свой php.ini и их нужно отредактировать по 1му варианту выше.
    Ответ написан
    Комментировать
  • Какую библиотеку можно использовать для изменения ФИО по падежам?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Ответ написан
    Комментировать
  • Как правильно обучить классификатор?

    @dmshar
    Да уж, изучать ML по "статейкам" это жесть.

    "если дать классификатору какую нибудь картинку, типо человек/ дерево/ мебель" - не дать, а сначала обучить на этих картинках, то потом он и будет классифицировать ее на "типо человек/ дерево/ мебель". А если дать эту картинку классификатору, обученному на "котиках-собачках", тогда не удивляйтесь, если он ваш табурет примет за собаку, а дерево за кота. Или наоборот.

    как тогда обучать классификатор, где по сути должно быть два класса: суецид и все остальное - абсолютно так-же, как и котиков-собачек где их тоже два класса, про которые пишут ваши "статейки". Дать обучиться на пару десятках тысяч размеченных картинках, на которых эти ваши "вены, виселицы, синии киты" и столько-же картинок где их нет. Вот и будет потом ваш обученных классификатор делить картинки на "суецид и все остальное".
    Ответ написан
    3 комментария
  • Как сделать выполнение php кода, когда пользователь закрыл вкладку?

    На JS ловить window.blur или window.unload (точно не помню), по этому событию слать в API запрос, по запросу выполнять нужное действие. Можно пойти от противного: слать hearbeat запросы раз в 30 секунд, если пропустили - значит, вкладка закрыта или интернета нет, соответственно, выполняем функцию.
    Ответ написан
    Комментировать
  • Как правильно добавить и вывести категории с БД + фотография?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Отсюда возникает первый вопрос - как лучше записывать эти категории - в один столбик, или для каждой категории сделать отдельный?
    таблица связей ид_проекта-ид_категории. Читать про отношения один-ко-многим и многие-ко-многим.

    Фотографию категорий я не хочу записывать в базу.
    Почему? Лень? Религия? Звезды не сошлись?

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

    miraage
    @miraage
    Старый прогер
    Примерно так выглядит мой конфиг для local development with symfony.
    Это не продакшн конфиг.

    docker-compose.yml
    version: '2'
    services:
      nginx:
        build: ./docker/nginx
        ports:
          - "80:80"
        links:
          - php
        volumes:
          - ./docker/nginx/http.conf:/etc/nginx/conf.d/http.conf
          - ./docker/nginx/site.conf:/etc/nginx/sites-enabled/site.conf
        volumes_from:
          - php
        command: 'nginx -g "daemon off;"'
      php:
        build: ./docker/php
        volumes:
          - .:/src
          - ./docker/php/php-cli.ini:/etc/php/7.0/cli/conf.d/php-cli.ini
          - ./docker/php/php-fpm.ini:/etc/php/7.0/fpm/conf.d/php-fpm.ini
          - ./docker/php/pool.conf:/etc/php/7.0/fpm/pool.d/www.conf
        command: 'php-fpm7.0 -F'
        links:
          - db
          - cache
        environment:
          SYMFONY__DB__DRIVER: pdo_pgsql
          SYMFONY__DB__HOST: db
          SYMFONY__DB__PORT: 5432
          SYMFONY__DB__NAME: dbname
          SYMFONY__DB__USER: dbuser
          SYMFONY__DB__PASSWORD: dbpassword
      db:
        image: "postgres:latest"
        environment:
          POSTGRES_DB: dbname
          POSTGRES_USER: dbuser
          POSTGRES_PASSWORD: dbpassword
      cache:
        image: "redis:latest"
        command: redis-server --appendonly yes


    docker/nginx/Dockerfile
    FROM ubuntu:16.04
    
    RUN apt-get update \
        && apt-get install -y nginx


    docker/nginx/http.conf
    access_log /dev/stdout;
    error_log /dev/stderr;


    docker/nginx/site.conf
    server {
        listen 80;
        server_name example.dev;
        root /src/web;
        index index.php index.html;
        
        location / {
            try_files $uri /app_dev.php$is_args$args;
        }
        
        location ~ ^/(app_dev|config)\.php(/|$) {
            include fastcgi.conf;
            
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            fastcgi_pass php:9000;
            
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
        }
        
        location ~ \.php$ {
            return 404;
        }
    }


    docker/php/Dockerfile
    FROM ubuntu:16.04
    
    ENV PHP_PACKAGES \
            php7.0-fpm \
            php7.0-cli \
            php7.0-readline \
            php7.0-pgsql \
            php7.0-mcrypt \
            php7.0-xml
    
    RUN apt-get update \
        && apt-get install -y $PHP_PACKAGES
         
    RUN usermod -u 1000 www-data


    docker/php/php-cli.ini
    error_reporting = -1
    display_errors = On
    log_errors = Off
    html_errors = Off


    docker/php/php-fpm.ini
    error_reporting = -1
    display_errors = On
    log_errors = Off
    html_errors = On
    cgi.fix_pathinfo = 0


    docker/php/pool.conf
    pid = /var/run/php.pid
    
    [www]
    
    user = www-data
    group = www-data
    
    listen = 0.0.0.0:9000
    
    pm = dynamic
    pm.max_children = 20
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 3
    
    clear_env = no
    catch_workers_output = yes


    Как разворачивать базу

    Читайте про docker-entrypoint-initdb.d

    Либо же
    docker cp file.sql.gz containername:/tmp/dump.sql.gz
    docker exec -ti containername bash
    gunzip -c /tmp/dump.sql.gz | psql -U username dbname
    Ответ написан
    3 комментария
  • Найти в тексте изображения с определенным классом, получить альт, src, и преобразовать в ссылку?

    @dodo512
    https://3v4l.org/Cai40
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    
    $xpath = new DOMXPath($dom);
    $nodes = $xpath->query('//img[contains(@class, "popup-img")]');
    
    foreach($nodes as $node) {
       $a = $dom->createElement('a');
       $a->setAttribute('class', $node->getAttribute("class"));
       $a->setAttribute('title', $node->getAttribute("alt"));
       $href = parse_url($node->getAttribute("src"), PHP_URL_PATH);
       $a->setAttribute('href', '..' . str_replace('/thumbs/100/', '/', $href));
       $a->setAttribute('style', "background: url('..$href'); -webkit-background-size:cover; background-size:cover;");
       $node->parentNode->insertBefore($a, $node);
       $node->parentNode->removeChild($node);
    }
    echo $dom->saveHTML();
    Ответ написан
    1 комментарий
  • Сортировка многомерного массива php в цикле foreach?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Как отсортировать многомерный массив в php?

    В любом случае чтобы отсортировать, данные надо будет подготовить. То есть добавить ещё один цикл предварительно.
    1. foreach чтобы подготовить данные и отсортировать
    2. отсортированные данные через foreach вывести
    Ответ написан
    2 комментария
  • Как отправлять ajax, если .htaccess меняет расширение .php на ничего?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    во первых определитесь ДЛЯ ЧЕГО в хтаксессе такие правила, иначе там какой-то бред. Обычно нечто подобное делают для переадресации на единую точку входа, в вашем случае я вообще не понимаю зачем такие правила.
    во вторых (когда вы разберетесь с первым) либо исключите из правил пхп файлы, либо вы придете к нормальному роутингу, мвц и объектам и вопрос отпадет сам собой.
    Ответ написан
    Комментировать
  • PHP как лучше выполнять скрипты?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Один процесс (worker) всегда висит в памяти и запущен из-под пользователя с нужными правами.
    Другой скрипт - даёт задание на исполнение через unix socket и в него же получает вывод во время исполнения, который может перенаправлять сразу в браузер.

    При необходимости - можно создать очередь и "вести почтовый диалог" через БД между этими двумя скриптами.
    Ответ написан
    Комментировать
  • Не могу найти ошибку при отправке формы?

    @ettychel
    Внимательно посмотрите в ошибку
    Base table or view not found: 1146 Table 'visualstudy.post_every_day_post_every_day_tag'

    И на название своей таблицы
    Schema::create('post_everyday_conect_to_tags',

    'App\PostEveryDayTag'

    Равно названию таблицы post_every_day_tags
    'App\PostEveryDay'

    Равно названию таблицы post_every_days
    Ответ написан
    2 комментария
  • После удаления кода в header.php при обновлении шаблона не изменится ли он?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    Здравствуйте.

    При обновлении все изменения перетрутся. Используйте механизм дочерних тем.
    Ответ написан
    Комментировать
  • Что делать, если ServiceWorker застрял в браузерах клиентов?

    evgensenin
    @evgensenin Автор вопроса
    Yii2 || Laravel, vue & nuxt
    Добавил в заголовки ответов АПИ
    clear-site-data: storage
    это сработает только если клиент обновит страницу
    и кэш будет всегда сбрасываться при обновлении страницы (это затрагивает localstorage и потому будет разлогин)
    Ответ написан
    1 комментарий
  • Почему json_encode() выдает пустой результат при работе с кириллицей?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Проверьте просто вывод данных из БД.
    Проверьте строку в БД.
    Проверьте, что везде UTF-8: кодировка скрипта, сайта, страницы, база, таблица, поле таблицы.
    Ответ написан
  • Есть ли какая-нибудь книга по php mysqli?

    DevMan
    @DevMan
    забываем о mysqli и учим pdo.
    для изучения pdo вполне достаточно мана.
    для изучения мускуля нужно читать книги по мускулю.
    Ответ написан
    6 комментариев
  • Как обрезать строку unicode?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну и чтобы ответить на вопрос буквально - mb_substr
    Ответ написан
    Комментировать
  • Как получить данные методом file_get_contents чужого сайта с другого ip?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Через выбранный internal-интерфейс
    <?php
    $opts = array(
        'socket' => array(
            'bindto' => '10.10.1.1:0',
        )
    );
    
    $context = stream_context_create($opts);
    $file = file_get_contents("https://site.com/", false, $context);


    http-прокси с авторизацией
    <?php
    $auth = base64_encode('LOGIN:PASSWORD');
    
    $aContext = array(
        'http' => array(
            'proxy' => 'tcp://192.168.0.2:3128',
            'request_fulluri' => true,
            'header' => "Proxy-Authorization: Basic $auth",
        ),
    );
    $cxContext = stream_context_create($aContext);
    
    $sFile = file_get_contents("http://www.google.com", False, $cxContext);
    
    echo $sFile;


    Материалы для изучения
    https://www.php.net/manual/en/context.php
    https://www.php.net/manual/en/ref.stream.php
    Ответ написан
    Комментировать
  • Как ускорить чат?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Для начала - данный сервис немного не про это.
    Во первых вам надо разобраться где конкретно у вас тормоза, за вас этим тут никто не займется, а по коду это понять практически невозможно
    Во вторых (но после первого) уже конкретизировать вопрос: "медленно выполняется это: [3-4 строчки кода, ну 10-15 если это реально нужно], что можно сделать?".

    А так у вас вопрос из разряда "Дорогие ученые, у меня в подвале подземный стук, объясните как он происходит?".

    UPD:
    как сделать так чтобы они вызывались только когда нужно не знаю
    так как у вас это "такой себе" чат - сильно что-то исправить не получится, для этого нужно переписать как серверный, так и браузерный код, используя сокеты или хотя бы лонг поллинг.
    В вашем случае - во первых сократить количество запросов к серверу - поставьте интервал хотя бы секунд 10 вместо 1.
    Во вторых проверять бан можно не по интервалу, а только когда юзер что-то пришет в чат, тогда и проверять и возвращать ответ сервера с флагом бана.
    Ну и хз как у вас там работает сам чат на сервере, я бы посмотрел как быстро выполняются запросы к бд и насколько быстро вообще код исполняется на сервере.
    Ответ написан
    5 комментариев