• Как заставить работать 2 параллельных запроса одновременно в nginx?

    inside22
    @inside22
    BushaevDenis в предыдущем комментарии все верно сказано. Смотрите свою CMS и Framework.
    Это может быть не только сессии, но и соединение с БД.
    Ответ написан
    Комментировать
  • Почему SSD загружается на 100% при INSERT в Mysql?

    inside22
    @inside22
    wtfowned возможно у вас в этой таблице слишком много индексом и INSERT запросе индексы начинают обновляться, а этот процесс очень ресурсоемкий.
    Ответ написан
    3 комментария
  • Как читать log-файлы access.log?

    inside22
    @inside22
    Вадим Тимошенко может проще подключить Cloudflare.com и забыть про эту головную боль.

    Обратите внимание на запросы, они все со статусом 499, вас тупо атакуют, чтобы загрузить ваш сервер.

    499 CLIENT CLOSED REQUEST
    A non-standard status code introduced by nginx for the case when a client closes the connection while nginx is processing the request.


    Cloudflare на ура решит бесплатно все ваши проблемы :=)
    Ответ написан
    Комментировать
  • Как реализовать систему оповещения для кроссплатформенного приложения (notification или push - notification | JS + PHP)?

    inside22
    @inside22
    MadPirozhok на сервере на PHP пишите запрос, который выбирает всех пользователей, у которых в ближайшие три дня заканчивается подписка, после посылаете PUSH-сообщение (посмотрите в сторону onesignal.com) или имейл.
    Запускаете этот скрипт раз в сутки с утреца - пользователь будет предупрежден три раза до аннулирования подписки.

    Самый простой способ :=)
    Ответ написан
    Комментировать
  • При смене версий PHP вырастает нагрузка на диск, что делать?

    inside22
    @inside22
    MrKMV34

    Для ~300 rps много ресурсов расходуется.

    Попробуйте поставить на сервер Blackfire.io или XHProf.

    Думаю узнаете много интересного о причине нагрузки высокой.

    "БД нагрузка ~400prs select" - это вообще не о чем, если только конечно это не супер тяжелые запросы с INNER JOIN на 10 таблиц.

    После этого есть смысл запустить https://github.com/major/MySQLTuner-perl и посмотреть рекомендации.
    Ответ написан
    Комментировать
  • Как посчитать значение по двум датам и сгруппировать по одной?

    inside22
    @inside22
    Руслан вы бы по понятнее условие написали.

    Не надо стараться запихать все в один запрос.

    Лучше WHERE YEAR(l.created_at) > '2017' GROUP BY `date`; вместо этого использовать BETWEEN, я думаю. Поиграйтесь с EXPLAIN, посмотрите как выборка происходит, используются ли индексы или нет.
    Ответ написан
  • Прошу проконсультировать по разработке Web-приложения, как реализовать учет и базу данных?

    inside22
    @inside22
    ARX2 Разбивайте, рисуйте таблицы, потом рисуйте связи этих таблиц.
    Таким образом вы сможете построить гибкую систему.

    user - сотрудники
    group - департаменты
    supplier - поставщики

    order - заказы
    order_approval - в этой таблице записывать ИД-ордера и (ИД пользователя или ИД-депараментов), которые должны дать одобрение заказа.
    order_supplier - связь поставщика и заказа
    order_payments - оплаты

    и т.д.
    Ответ написан
    Комментировать
  • Как использовать geo_distance и geo_bounding_box в одном запросе?

    inside22
    @inside22 Автор вопроса
    После того, как перенес geo_bounding_box в should все заработало.

    {
      "from": 0,
      "size": 10,
      "query": {
        "bool": {
          "filter": {
            "geo_distance": {
              "distance": "1km",
              "location": "40.5586,49.6971"
            }
          },
          "should": {
            "geo_bounding_box": {
              "location": {
                "top_left": "49.1248,36.9448",
                "bottom_right": "29.8779,58.3725"
              }
            }
          }
        }
      }
    }
    Ответ написан
    Комментировать
  • Как создать бизнес e-mail на базе amazon ses?

    inside22
    @inside22
    Amazon SES это образно говоря производительный SMTP-сервер который позволяет вам при помощи API или примитивного POP соединения отсылать письма.

    Принимать почту не получится, только отсылать.

    Как я понял, вам нужен полноценный почтовый сервис. Вы можете использовать Google Suite за 5 баксов месяц с аккаунт или Yandex PDD совершенно бесплатно. Покупаете домен, привязываете его к домену и вуаля!
    Ответ написан
    Комментировать
  • PHP ORM для бизнес приложений?

    inside22
    @inside22
    Ребята, а Phalcon PHP фреймворк ни кто не использует? Он дерзкий, как пуля резкий и ORM так красивый и шустрый.
    Ответ написан
  • Как узнать ближайшую станцию метро к определённому адресу?

    inside22
    @inside22
    При помощи https://developers.google.com/places/supported_typ... получите список всех станций в нужном радиусе, сохраните это все в БД. Будут у вас станции о координаты.

    Далее передаете адрес библиотеки и получите координаты, тоже соберите это все в БД.
    https://maps.googleapis.com/maps/api/geocode/json?...

    Далее передаете координаты метро и библиотеки вот этой функции и она вам вернет расстояние.
    public function getDistance(float $latitudeFrom, float $longitudeFrom, float $latitudeTo, float $longitudeTo): int
        {
            $rad = M_PI / 180;
            $theta = $longitudeFrom - $longitudeTo;
            $dist = sin($latitudeFrom * $rad) * sin($latitudeTo * $rad) + cos($latitudeFrom * $rad) * cos($latitudeTo * $rad) * cos($theta * $rad);
    
            return acos($dist) / $rad * 60 * 1.853;
        }


    Можно запариться и при помощи Google Matrix API просчитать сколько пешком топать и сколько на машине ехать.
    Ответ написан
    7 комментариев
  • Как настроить отправку письма с вложением при помощи PHPMailer?

    inside22
    @inside22
    Проверьте и все станет ясно :-)

    $filename = get_template_directory_uri() . '/src/Exception.php';
    if (is_readable($filename)) {
        echo "$filename \n Файл доступен для чтения";
    } else {
        echo "$filename \n Файл доступен для чтения";
    }
    Ответ написан
    Комментировать
  • Как настроить ЧПУ на wordpress apache+nginx?

    inside22
    @inside22
    Как вам выше уже сказали, отказывайтесь от Apache и будет вам счастье.
    Вот вам конфиг и кеширование и много других полезностей.

    Вот тут надо будет указать правильную версию вашего PHP.
    fastcgi_pass unix:/var/run/php5-fpm.sock;

    server {
    	
    	listen 80;
    	set $root_path '/home/wordpress/www'; # default directory where the files will be stored and served from
    	root $root_path;
    	
    	index index.php; # index defined to be served under directory
    	server_name www.blog.com;
    			
    	set $skip_cache 0;
    
    	# POST requests and urls with a query string should always go to PHP
    	if ($request_method = POST) {
    		set $skip_cache 1;
    	}   
    	if ($query_string != "") {
    		set $skip_cache 1;
    	}   
    	
    	# Don't cache uris containing the following segments
    	if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
    		set $skip_cache 1;
    	}
    	
    	# Don't use the cache for logged in users or recent commenters
    	if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    		set $skip_cache 1;
    	}
    	
    	location ~* \.(gif|jpg|jpeg|png|ico|bmp|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|woff|woff2|exe|eot|svg|ttf)$ {
    		root $root_path;
    		expires 14d;
    		add_header Pragma public;
    		add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    		access_log off;
    		log_not_found off;
    	}
    	
    	#    Common deny or internal locations, to help prevent access to areas of
    	#    the site that should not be public
    	location ~* wp-admin/includes { deny all; }
    	location ~* wp-includes/theme-compat/ { deny all; }
    	location ~* wp-includes/js/tinymce/langs/.*\.php { deny all; }
    	location /wp-content/ { internal; }
    	location /wp-includes/ { internal; }
    	
    	#    The next line protects the wp-config.php file from being accessed, but
    	#    we need to be able to run the file for the initial site setup. Uncomment
    	#    the next line after setup is completed and reload Nginx.
    	location ~* wp-config.php { deny all; }
    
    	#    Prevent any potentially-executable files in the uploads directory from
    	#    being executed by forcing their MIME type to text/plain
    	location ~* ^/wp-content/uploads/.*.(html|htm|shtml|php)$ {
    		types { }
    		default_type text/plain;
    	}
    
    	location / {
    		try_files $uri $uri/ /index.php?q=$uri&$args;
    	}
    
    	error_page 404 /404.html;
    
    	error_page 500 502 503 504 /50x.html;
    		location = /50x.html {
    		root /usr/share/nginx/www;
    	}
    
    	location ~ \.php$ {
    		try_files $uri =404;
    
    		fastcgi_pass unix:/var/run/php5-fpm.sock;
    		fastcgi_index index.php;
    		include fastcgi_params;
    
    		fastcgi_split_path_info       ^(.+\.php)(/.+)$;
    		fastcgi_param PATH_INFO       $fastcgi_path_info;
    		fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    		fastcgi_read_timeout    3600;
    
    		fastcgi_cache_bypass $skip_cache;
    		fastcgi_no_cache $skip_cache;
    
    		fastcgi_cache WORDPRESS;
    		fastcgi_cache_valid  5m;
    	}
    }


    /etc/nginx/nginx.conf
    ##
    # Fastcgi Params
    ##
    fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
    fastcgi_cache_key "$scheme$request_method$host$request_uri";
    fastcgi_cache_use_stale error timeout invalid_header http_500;
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
    Ответ написан
    Комментировать
  • Как подключить SSL в NodeJS v4.2.1 без использования Express.js?

    inside22
    @inside22 Автор вопроса
    Тимур Шемсединов и Константин Китманов, спасибо вам большое. Начинаю курить документацию.

    Я правильно мыслю?
    Сначала я создаю httpsOptions настройки, потом подгружаю https, потом создаю server с https и с нужными настройками, а далее подгружаю socket.io и говорю что надо использовать уже созданный server.
    Я правильно мыслю?

    var fs = require('fs');
    
    var httpsOptions = {
            key: fs.readFileSync('/home/quotes/ssl/domain.key'),
            cert: fs.readFileSync('/home/quotes/ssl/domain.crt'),		
            ca: fs.readFileSync('/home/quotes/ssl/gd_bundle-g2-g1.crt'),
            requestCert: true,
            rejectUnauthorized: false,
    }
    
    var https = require('https');
    var server = https.createServer(httpsOptions, https).listen(8443);
    
    var io = require('socket.io');	
    var app = io.listen(server);
    Ответ написан
  • NGINX - как предоставить нескольким пользователем доступ по SSH к /home/domain/www на один домен?

    inside22
    @inside22 Автор вопроса
    Единственное решение которое удалось найти, это создавать директории:

    /home/userone/
    /home/usertwo/

    и двух пользователей:
    userone
    usertwo

    а потом делать линк:

    ln -s /home/userone/ /home/static/www/userone
    ln -s /home/usertwo/ /home/static/www/usertwo
    Ответ написан
    Комментировать
  • Как сделать в NGINX первое найденное правило последним?

    inside22
    @inside22 Автор вопроса
    Александр Федотов проблема заключается в том, что я не использую rewrite, я использую proxy_pass. Где мне тут LAST или BREAK прописывать?

    location /blog {		
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://blog.domain.com:80;
      }
    Ответ написан
    Комментировать
  • Как отсылать запросы domain.com - первый сервер, domain.com/other/ второй сервер?

    inside22
    @inside22 Автор вопроса
    Алексей Романенко, только так, верно? других вариантов не существует?

    server {
      server_name domain.com
      location /other/ {
        proxy_pass  http://other.domain.com/;
      }
    }
    Ответ написан
  • Как оптимизировать такой sql запрос?

    inside22
    @inside22
    Вячеслав Беляев если вы работаете на PHP, создайте один класс Questionary методом getQuestionary()
    и дальше используйте примено так, передавайте критерии и получайте ответ:

    $questionaryObj= Questionary->getQuestionary(array(
        'status' => 1,
        'delete' => 0,
    ));

    Это вместо первого запроса к таблице ankets.
    Далее крутим полученные данные и получаем оставшиеся данные:
    foreach($questionaryObj as $questionary) {
    
        $clientObj= Client->getClient(array('cliendId' => $questionary->cliendId));
        $serviceObj= Service->getService(array('serviceId' => $questionary->serviceId));
        $meetObj= Meet->getMeet(array('meetId' => $questionary->meetId));
        $userCreatedName = User->getUser(array('userCreated' => $questionary->userId));
        $userDogovorName  = User->getUser(array('userDogovor' => $questionary->userDogovor));
        $userCompleteName  = User->getUser(array('userComplete' => $questionary->userComplete));
    
        $responceArr = array(
            'name' => $clientObj->name,
            'lastname' => $clientObj->lastname,
            'patronymic' => $clientObj->patronymic,
            'phone' => $clientObj->phone,
            'serviceName' => $serviceObj->name,
            'meet' => $meetObj->meet,
            'wasMeet' => $meetObj->wasMeet,
            'dateMeet' => $meetObj->dateMeet,
            'serviceName' => $serviceObj->name
        );
    }


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

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

    inside22
    @inside22
    Давно пользуемся Clickatell - в целом довольны. Единственная проблема, некоторые недобросовестные операторы могут блокировать их шлюзы.
    Ответ написан
    Комментировать
  • Ubuntu - какой сервис или какой порт сколько трафика генерирует?

    inside22
    @inside22 Автор вопроса
    Спасибо за ссылки.

    iptraf -s eth0
    не показывает порты на которых висит NodeJS, не могу понять почему.
    3003,3004 к примеру. Хотя они активные, iftop -f "dst port 3003" показывает активность.

    Проблема заключается в том, что iptraf и iftop показывают REALTIME, а мне надо понять суммарно какой порт сколько генерирует.
    Ответ написан
    Комментировать