ClearURLs — https://github.com/ClearURLs/Addon/ расширение которое обрезает в URL все трекеры. Это превосходно.
ClearURLs — https://github.com/ClearURLs/Addon/ расширение которое обрезает в URL все трекеры. Это превосходно.
Ранее я описывал алгоритм авторизации Digest, как самому собрать пакет данных
Для PHP все оказалось проще, в CURL уже есть готовый механизм, который делает 2 запроса для правильной авторизации
Это параметр CURLOPT_HTTPAUTH => CURLAUTH_DIGEST,
Полностью запрос:
$request =[ 'SOAPAction: "http://yandex.ru/"', 'Content-Type: text/xml;charset=UTF-8', ]; $options = array( CURLOPT_URL => $url, CURLOPT_HEADER => true, CURLOPT_VERBOSE => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_SSL_VERIFYPEER => false, // for https CURLOPT_USERPWD => $username . ":" . $password, CURLOPT_HTTPAUTH => CURLAUTH_DIGEST, CURLOPT_HTTPHEADER => $request, CURLOPT_POST => true, CURLOPT_POSTFIELDS =>"xmlRequest=" . $input_xml // если нужно передать xml в теле POST ); $ch = curl_init(); curl_setopt_array( $ch, $options ); try { $raw_response = curl_exec( $ch ); // validate CURL status if(curl_errno($ch)) throw new Exception(curl_error($ch), 500); // validate HTTP status code (user/password credential issues) $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($status_code != 200) throw new Exception("Response with Status Code [" . $status_code . "].", 500); } catch(Exception $ex) { if ($ch != null) curl_close($ch); throw new Exception($ex); } if ($ch != null) curl_close($ch); echo "raw response: " . $raw_response;
https://habr.com/ru/company/domclick/blog/548610/
Липкие сессии для самых маленьких [Часть 1] _ Блог компании ДомКлик _ Хабр
https://12factor.net/ru/
Understanding your Symfony app with Prometheus:
https://blog.4xxi.com/understanding-your-symfony-app-with-prometheus-fdb4b0124d99
Сбор и анализ логов с Fluentd:
https://habr.com/ru/company/selectel/blog/250969/
О сборке метриков:
https://www.youtube.com/watch?v=RPK5fp9-4yI
Fluentd
https://mcs.mail.ru/help/ru_RU/cases-logs/case-swarm
Fluentd docker
https://docs.docker.com/config/containers/logging/fluentd/
Про PUSHGATWAY очень мало написано в инете, особенно под PHP
Для установки локально PUSHGATWAY docker-compose.yml:
pushgateway: image: prom/pushgateway restart: always container_name: app2022-pushgateway ports: - 9091:9091 - 9090:9090 networks: - front - backend
Есть библиотека для работы с pushgateway
https://github.com/PromPHP/prometheus_push_gateway_php -> promphp/prometheus_push_gateway_php
Однако, нашел хороший простой класс, который основан на GuzzleHttp\Client:
https://github.com/markarik/wnl-platform/blob/9f4383e850373e1849f04f6d1487268cf91fa615/app/Console/PrometheusPushgateway.php
Немного модифицировал его под свои нужды, и получилось вот такое
<?php namespace App\Handler; use GuzzleHttp\Client; use GuzzleHttp\Exception\GuzzleException; class PrometheusPushgateway { public function notify($count, $code=200) { $url = 'http://pushgateway:9091/metrics/job/symfony/instance/sender'; $url = getenv('PUSHGATWAY_URL'); $client = new Client(); try { $bodyLines = [ "# HELP response_symfony_code_count", "# TYPE response_symfony_code_count", "response_symfony_code_count {code=\"${code}\"} ${count}" ]; $body = implode("\n", $bodyLines) . "\n"; $client->request('POST', $url, [ 'body' => $body ]); } catch (GuzzleException $exception) { exit('error'); } } }
#!/bin/bash php -i php bin/console debug:config framework profiler php bin/console debug:config web_profiler php bin/console debug:container profiler --show-arguments php bin/console debug:container web_profiler.debug_toolbar --show-arguments php bin/console debug:event-dispatcher kernel.response php bin/console about php bin/console debug:router
User Deprecated: Since symfony/framework-bundle 5.1: Using type "Symfony\Component\Routing\RouteCollectionBuilder" for argument 1 of method "App\Kernel:configureRoutes()" is deprecated, You need to update Kernel class to start using RoutingConfigurator instead of RouteCollectionBuilder. You can do it automatically by updating the recipe (composer recipes:install symfony/framework-bundle --force)
Бесит сафари, там где хром отрабатывает на ура, тупой сафари не может распарсит дату, приходится за место
var dtr = new Date( $('#record-client-age-2').val() );
писать
var [ day, month, year ] = $('#record-client-age-2').val().split('.') var dtr = new Date(year, month, day);
и не забыть указать плейсхолдер
<input class="record-form__input-text " type="date" name="client_age_2" value="" id="record-client-age-2" tabindex="7" required placeholder="dd.mm.yyyy" >
а все почему? потому что в 2021 году сафари не знает что такое type=’date’, в 2021 году
$curl = curl_init(); curl_setopt( $curl, CURLOPT_PUT, 1 ); curl_setopt( $curl, CURLOPT_INFILESIZE, filesize($tmpFile) ); curl_setopt( $curl, CURLOPT_INFILE, ($in=fopen($tmpFile, 'r')) ); curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, 'POST' ); curl_setopt( $curl, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json' ] ); curl_setopt( $curl, CURLOPT_URL, $url ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 ); $result = curl_exec($curl); curl_close($curl); fclose($in);