Ответы пользователя по тегу PHP
  • Как настроить nginx для обработки разных роутов разными fastcgi?

    Flaker
    @Flaker Автор вопроса
    Решил задачу таким образом:

    server {
      listen 80;
    
      server_name sub.site.local
      root        /projects/oldsite;
      index       index.php;
    
      client_max_body_size 100M;
      fastcgi_read_timeout 1800;
    
      location / {
        try_files $uri $uri/ /index.php?$query_string;
      }
    
      # if (!-d $request_filename) {
      #   rewrite ^/(.+)/$ /$1 permanent;
      # }
    
    
      location ~* ^/new/(.+\.(?:gif|jpe?g|png|ico|js|css))$ {
        alias /projects/newsite/public/$1;
        expires       max;
        log_not_found off;
        access_log    off;
      }
    
      location /new/ {
          alias /projects/newsite/public;
          try_files $uri $uri/ @new;
    
          location ~* \.php {
            include       fastcgi_params;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /projects/newsite/public/index.php;
            fastcgi_pass  newsite:9000;
          }
      }
    
      location @new {
        rewrite ^/new/(.*)$ /new/index.php?$1 last; # THIS IS THE IMPORTANT LINE
      }
    
    
      location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires       max;
        log_not_found off;
        access_log    off;
      }
    
      location ~ \.php$ {
        try_files     $uri =404;
        include       fastcgi_params;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass  oldsite:9000;
      }
    }


    P.S. Забыл про вопрос, поэтому только сейчас опубликовал
    Ответ написан
    Комментировать
  • Как удалить сессию пользователю ( разлогинить его )?

    Flaker
    @Flaker
    Вам, в любом случае, нужно проверять эквивалентность токена в базе и токена в кукисах при каждом обращении к ресурсу. При не совпадении токенов, чистим сессию и отправляем пользователя логиниться.
    Ответ написан
  • Как подружить объектый подход взаимодействия с БД и ресурсоёмкую аналитику?

    Flaker
    @Flaker
    На самом деле, имхо, что бы достичь максимальной скорости генерации отчетов при запросе, нужно просто перестать их генерировать при запросе.
    Генерируйте заранее.

    По поводу DataMapper: Производительности проседает обычно при селекте большого кол-ва записей. Конечно, этот паттерн, добавляет +1 уровень абстракции, позволяя вам не работать с SQL напрямую. Вы всегда можете обойтись без него.
    Ответ написан
    Комментировать
  • Как будет выглядеть код из Pascal на PHP?

    Flaker
    @Flaker
    Ну смотри:
    1) Ставим git
    1.1) Опционально ставим PowerShell
    2) Ставим node
    3) Ставим bower
    4) Ставим gulp
    5) Ставим Composer
    6) Ставим Laravel через Composer
    composer create-project laravel/laravel your-project-name --prefer-dist

    7) Ставим JeffreyWay/Laravel-4-Generators
    8) Монтируем REST через генератор
    9) Ставим Angular
    10) Ставим Browserify
    11) Ставим Bootstrap
    12) Делаем в нашем SPA форму ввода массива, используя ангуляровское двустороннее связывание, а дизайн Bootstrap (Кастом будем лепить позже, на первом этапе главное прототип за краткие сроки)
    13) Делаем валидацию на клиенте
    14) Делаем прием и валидацию данных на сервере (Не забываем, мы сидим на REST'е, поэтому соответствуем)
    15) Пишем ваш код из паскаля, для преобразования массива, используя всю мощь PHP:
    $res = array_reverse(Input::get('myarray'));
    16) Отдаем все это в JSON, конечно:
    return Response::json($res);
    17) Отображаем данные на клиенте
    Ответ написан
    2 комментария
  • Что будет правильно использовать PHP или jquery(AJAX)?

    Flaker
    @Flaker
    PHP выполняется на сервере, а Javascript на клиенте. jQuery — это библиотека для javascript, которая позволяет делать некоторые вещи проще, например отсылать запрос на сервер без перезагрузки страницы. Такой подход к построению веб-приложения называется Ajax.

    Чтобы динамически обновлять контент, нужно отправлять запрос на сервер, а затем полученные данные вставлять куда требуется.

    Для отправки запроса используй jQuery.ajax(), для обработки запроса на сервере и возврата данных используй PHP, когда данные поступили клиенту (В Callback метода .ajax) используй jQuery, чтобы обновить содержимое какого-либо блока.
    Ответ написан
    3 комментария
  • Каким способом лучше перерабатывать многомиллионые логи?

    Flaker
    @Flaker
    А нельзя обрабатывать не еженедельно, а каждые сутки, например?
    К тому же, такого демона реализовать можно(лучше) на C++, и распараллелить.
    Ответ написан
  • PHP - Как "правильно" хранить огромный статичный массив класса?

    Flaker
    @Flaker
    Файл с массивом данных (data.php):
    <?php
    return [
        // Data here...
    ];


    Инклудим:
    $mydata = require('data.php');
    Ответ написан
    3 комментария
  • Как удалить PHP с Denwer?

    Flaker
    @Flaker
    Все просто:
    1) Удаляем Denwer
    2) Ставим OpenServer
    3) Наслаждаемся

    P.S. Может конечно не то что ожидал ТС, но переходите уже на нормальные инструменты, которые приятно использовать.
    Ответ написан
  • Как отправить массив методом get через редирект .htaccess?

    Flaker
    @Flaker
    Ты можешь делать так index.php?array[1]=1&array[2]=2&array[3]=3, без rewrite в htaccess, тогда в массиве $_GET, по ключу array, у тебя будет лежать массив "1, 2, 3".

    Не совсем понимаю, зачем тебе rewrit'ы понадобились.
    Обычно, их используют для организации ЧПУ.

    Допустим:
    RewriteRule ^(.+)$ index.php?route=$1 [L,QSA]
    В данном случае все что будет после site.ru/, будет переправлено на index.php как GET запрос. В массиве $_GET эта строка будет лежать по ключу route.
    То есть, для того, что бы сделать из массив, придется парсить эту строку (Собственно, чем и занимается routing в паттерне MVC).

    Грубо говоря, можно сделать так:
    $route = $_GET['route'];
    $array = preg_split('/\//', $route);

    Теперь, при таком запросе "site.ru/1/2/3" в $array будут лежать элементы "1, 2, 3".

    Вообще, нормальный rewrite пишется так:
    # Activates URL rewriting
    RewriteEngine on
    
    # Allow file access
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # Rewrite rules
    RewriteRule ^(.+)$ index.php?route=$1 [L,QSA]

    Тут учитывается доступ к файлам напрямую.
    Ответ написан
    Комментировать