• MicroMQ и RabbitMQ очередь запросов внутри сервиса?

    @bychkov_64 Автор вопроса
    Ну так то оно так. Намертво вещает потому что для парсинга страниц я использую puppeter. Открывается 100+ вкладок браузера, оперативка на бедном VPS в красной зоне так же как и CPU. Да я тоже думал про то чтобы складывать запросы по урл и данные в бд. Чтобы не запускать браузер. Но так как вся разработка далека от релиза и при парсинге ошибки вылетают частенько что-то не подхватывается. Данные должны быть актуальные. Буду смотреть в сторону субд положу туда результат парсинга и время через которое данные уже не актуальны и требуют перепроверки.
  • MicroMQ и RabbitMQ очередь запросов внутри сервиса?

    @bychkov_64 Автор вопроса
    d-sem, я так понимаю, что другой сервис по таймауту закидывает пакет еще раз и он попадает в очередь rabbitmq, а после старта все то что было в очереди мгновенно отправляется в сервис. В любом случае это мой первый опыт работы с микросервисами. Не кидайтесь тапками плиз.

    let {responce} = await app.ask('browser', {
                path: '/tools/urls_info',
                method: 'post',
                body: {
                    urls: urls_array
                }
            });

    Вот так я отправляю данные сервису браузер
  • Как избежать использования функции the_post() в шаблоне архива?

    posters, при правильном подходе совместимы, можно и на любом другом движке написать полную ерунду которая будет работать медленно.
  • Docker как прикрутить домен?

    @bychkov_64 Автор вопроса
    Допер что нужно в контейнере поднять nginx. А на локалке в nginx сдлеать proxy_pass на localhost:3000.
  • Docker как прикрутить домен?

    @bychkov_64 Автор вопроса
    Я пробовал обращаться к localhost, gateway ip, напрямую и ничего не работает
  • NodeJS React и WP как собрать проект в 1 JS файл?

    @bychkov_64 Автор вопроса
    Наверное вы меня не так поняли. Я хочу собрать весь проект в 1 файл. У меня 2 проекта.

    1 - это фронтэнд на реакте и сокете
    2 - это сокет ио сервер

    я хочу первый проект собрать в 1 js файл. Что бы можно было подключить на нужную мне страницу просто установкой скрипта
  • Как сделать личный кабинет с услугами в WordPress?

    Вообще проще простого! Руками это не составляет сделать труда, насчет плагинов используй WooCommerce и плагин для управления правами пользователя или добавляй стандартному пользователю новые права и отображаем то что нужно. Те пишешь свой функционал и элементы и отображаешь авторизованному пользователю, а из woo возьмешь мои заказы и оформление покупки\заявки. А вообще wp-kama или кодекс в помощь. Просто подобных готовых решений не доводилось встречать, всегда что то из чего то будешь переделывать!
  • Wordpress авторизация за пользователя через админ панель без пароля, как?

    @bychkov_64 Автор вопроса
    Результатом стал вот такой мини плагин, спасибо за помощь. Спорный вопрос конечно а вот где могут быть уязвимые места тут. Не хотел использовать сессии. Ткни что можно исправить, а то опыта в WP мало.

    <?php
    defined('ABSPATH') or die("Stop stop stop.. bro!");
    /*
    Plugin Name: loginME
    Description: loginME
    Version: 1.0
    Author: dima
    Author URI: #
    Text Domain: loginME
    */
    
    class loginME{
        
        protected static $instance;
    
        public static function init() {        
               is_null(self::$instance) AND self::$instance = new self;
               return self::$instance;
        }
        
        public function __construct() {
            
            add_filter('user_row_actions', array( $this, 'user_row_actions'),10,2);
            add_action('init', array($this, 'loginME_init'));
            add_action("wp_footer", function(){
                if(isset($_COOKIE["isUSERCHANGER"])):
                    ?>
                    <div style="position: fixed;
                        background-color: #232050;
                        padding: 5px;
                        border-radius: 5px;
                        bottom: 30px;
                        right: 30px;">
                        <a style="color: #fff;" 
                           href="<?=home_url();?>/?switch_user=switch_user&user_id=<?=$_COOKIE["admin_id"];?>&clear=<?=$_COOKIE["isUSERCHANGER"];?>">
                            <div>Назад в админ панель &gt;</div>
                        </a>
                    </div>
                    <?php
                endif;
            });
        }
        
        public function loginME_init() {
            add_action('admin_action_switch_user', array( $this, 'switch_user'));
            add_filter( 'query_vars', function( $query_vars ){
                    $query_vars[] = 'switch_user';
                    return $query_vars;
            });
            add_action( 'template_redirect', function(){
                $switch_user = get_query_var('switch_user');
                if($switch_user === 'switch_user'){
                    
                    if(current_user_can('manage_loginME') || isset($_COOKIE["isUSERCHANGER"])){
                        
                        $admin_id = 0;
                        $admin_secret = 0;
                        
                        if(!isset($_COOKIE["isUSERCHANGER"])){
                            $admin_id = $GLOBALS['current_user']->data->ID;
                            $admin_secret = $GLOBALS['current_user']->data->ID.$GLOBALS['current_user']->data->user_pass;
                        }
    
                        $id = (isset($_GET['user_id']) ? $_GET['user_id'] : $_POST['user_id']);
                        $user = get_user_by( 'id', $id );
    
                        if(!isset($_GET['clear'])){
                            global $current_user;
                            unset($current_user);
                            nocache_headers();
                            wp_clear_auth_cookie();
                            wp_set_current_user($id, $user->user_login);
                            do_action( 'wp_login', $user->user_login );
                            wp_set_auth_cookie($id, true);
    
                            if(!isset($_COOKIE["isUSERCHANGER"])){
                                setcookie("isUSERCHANGER", md5($admin_secret), time()+3600);
                                setcookie("admin_id", $admin_id, time()+3600);
                            }
                        
                            wp_safe_redirect(home_url());
                        }else{
                            
                            unset($_COOKIE['isUSERCHANGER']); 
                            setcookie('isUSERCHANGER', null, -1);
                            unset($_COOKIE['admin_id']); 
                            setcookie('admin_id', null, -1);
                            
                            global $current_user;
                            unset($current_user);
                            nocache_headers();
                            wp_clear_auth_cookie();
                            wp_set_current_user($id, $user->user_login);
                            do_action( 'wp_login', $user->user_login );
                            wp_set_auth_cookie($id, true);
                            
                            wp_safe_redirect(admin_url( 'users.php'));
                        }
                        
                        die();
                    }
                }
    
            });
        }
        
        public function switch_user()
        {
            $id = (isset($_GET['user_id']) ? $_GET['user_id'] : $_POST['user_id']);
            if(isset($id)){
                wp_safe_redirect( home_url()."/?switch_user=switch_user&user_id=".$id);
                die();
            }
        }
        
        
        public function user_row_actions($actions, $user)
        {
            if(current_user_can('manage_loginME')){
                $action_name = "switch_user";
                $action = '?action='.$action_name.'&user_id='.$user->ID;
                $actions['loginME'] = '<a href="'.admin_url( "admin.php". $action ).'" aria-label="">Авторизация</a>';
            }
            return $actions;
        }
        
    }
    
    register_activation_hook( __FILE__, function (){
    	$role = get_role( 'administrator' );
    	$role->add_cap( 'manage_loginME' ); 
    });
    register_deactivation_hook( __FILE__, function (){
    	$role = get_role( 'administrator' );
    	$role->remove_cap( 'manage_loginME' ); 
    });
    add_action('plugins_loaded', array('loginME', 'init'));