• Nginx загружает index.php, как это исправить?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    тебе нужно настроить прокси на php-fpm что-то вроде этого

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        #fastcgi_pass    127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param DOCUMENT_ROOT /var/www/;
        fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
        fastcgi_param PATH_TRANSLATED /var/www$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        }
    Ответ написан
  • Пополнение, вывод денег из личного кабинета?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    "как сделать вывод денег пользователю на карту например." Делать ничего не надо все уже есть и придумано. операции по таким картам ведутся через банковские транзакции (переводы).
    То есть для начала тебе нужен банк который будет делать переводы физических если так можно выразиться денег. я думаю Альфа-банк с их "кликом" вполне годный инструмент для начала. Для перевода нужно знать номер карты и собственно сумма перевода. При переводах между абонентами комиссии нет поэтому издержек на выводе будет минимум. так что касаясь програмной части нужно будет реализовать только механизм заявок на вывод средств для ручной обработки. Двигаясь дальше можно добавить еще 3 метода вывода денег. вебмани киви и яндекс деньги. Они тоже имеют достаточно хорошую инфраструктуру для вывода налички. ну а дальше уже прочувствовав всю систему оборота денег пытаться искать пути автоматизации обработки заявок. Вывод на пластиковые карты для начала не самый хороший выбор. Лучше подключить для начала системы которые уже умеют выводить на пластик а там смотреть по обстоятельствам.
    Ответ написан
    Комментировать
  • Как оптимизировать запросы к бд в ZF?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    тут собственно встает вопрос о том как и что нужно обновить.
    Можно для нескольких записей выставить одинаковое поле если задать WHERE содержащие несколько id строк. например
    WHERE `id` IN(1,2,8)
    если же нужно установить разные значения для разных строк. Не могу с уверенной точностью сказать где, но видел систему которая собрала все запросы на обновление и удаление строк в один запрос(конкатенацией) и собственно так можно тоже сделать.
    Или использовать конструкцию типа
    UPDATE `tbl` SET `field` = CASE
    WHEN id = 1 THEN 123;
    WHEN id = 2 THEN 456;
    …
    END
    WHERE `id` IN (1,2,8)

    Но вот как это реализовать на zf1 честно не знаю почитай документацию.
    Ответ написан
    Комментировать
  • Сложный запрос mysql в php. В чём ошибка?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    $qr_result = mysql_query($sql); //исправил
    or die(mysql_error());

    1. Между функцией mysql_query($sql) и or die(mysql_error()); не должно быть точки с запятой.
    2. При подключении к базе нужно передать команду с присвоением кодировки:
    mysql_query("SET NAMES UTF8") or die('Не получилось выставить кодировку');

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

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    SELECT `table1`.`lol`, `table2`.`name`
    FROM `table1`
    LEFT JOIN `table2` ON `table2`.`id` = `table1`.`id`
    Ответ написан
    Комментировать
  • Как вывести на сайт консоль?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Написал на вскидку по документации. Если что, думаю, разберешься.
    Если нужно прямо сразу отправлять, можешь возврат такой функции пропустить через nl2br()
    function exec_output( $cmd, $return_array = FALSE) 
    {
        $console = array();
        exec($cmd, $console);
    
        if ( ! $return_array )
        {
            return implode(PHP_EOL, $console);
        }
        else {
            return $console;
        }
    }
    Ответ написан
  • Есть ль готовые решения или плагины для онлайн чата между пользователями на сайте?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Поднимайте websocket.
    На связке "ajax + mysql + php" реализовать данный функционал технически не возможно ввиду устройства протокола HTTP.
    Ответ написан
  • На какие ПО вы пишите сайты?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    бесплатный - NetBeans. (очень нравится реформатирование кода, очень не нравится работа с кодировками) Есть под все платформы. Собственно им и пользуюсь отдавать 200 баксов за phpstorm нет желания с такой бесплатной альтернативой.
    Так же бесплатный Codelobster - в принципе не плохой в чем-то даже лучше нетбинса простой и легкий.
    Если есть деньги - PhpStorm ну если вы не одноглазый пират конечно. Пользовался лицензией в компании, впечатления положительные но вот реформат кода как-то не впечатлил.
    Часто слышу Sublime Text но он тоже платный (70 баксов) Даже не смотрел в общем.
    Notepad++ - для мазохистов, и людей которые не жалеют своего труда и времени. На нем хорошо учится а вот реально работать я бы не советовал.
    Ответ написан
    Комментировать
  • Cannot send session cache limiter - headers already sent почему?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    смените кодировку файла на Utf-8 без BOM.
    Ответ написан
    2 комментария
  • Как лучше организовать файловую БД?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    В вашем случае, нужен очень грамотный специалист который знает все недостатки такой организации информации.
    В частности блокировка файлов, ожидание разблокировки файла, в общем организация одновременного доступа. Если вы просто будете делать инслюд а потом что-то типа "file_put_contents()" вас могут ожидать неприятные последствия. по сути вам нужно будет написать sqlite только языком PHP.
    Ответ написан
    Комментировать
  • Как определить успешность выполнения подфункций в классе?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Если у тебя все реально так работает то тут печаль беда а не код. если ты конечно не ссылками переменные получаешь.
    public function registerUser ( $data  ) { // Обращаем внимание $data
    
          /* от такого кода ничего не изменится
          $this->prepareData($data);
          $this->checkMail($data['email']);
          $this->checkData($data);
          */
    
          $this->createUser( $data ); // Обращаем внимание $data
        }

    я бы написал так
    public function registerUser ( $raw_data  ) 
    {
    
          $data = $this->prepareData($raw_data);
    
          if ( $this->checkMail($data['email']) && $this->checkData($data) ) 
          {
              $this->createUser( $data );
          }
          else
          {
               return FALSE;
          }
    }
    Ответ написан
  • Как восстановить загрузчик windows 7 после установки Ubuntu?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    смотря что в нем поломалось. grub умеет загружать винду. но если вы навернули згрузчик винды тут уже другой вопрос.
    Ответ написан
    Комментировать
  • Что за чудеса творится с исключениями php?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Ошибка != Исключение. Это 2 разные сущности.

    set_error_handler() посмотрите.

    catch(Exception $e) - создаете ошибку а ловите исключение. чтобы поймать исключение нужно его выбросить через throw

    ваш код правильнее будет выглядеть так
    try{
       $a = 1;
       $b = 0;
    
       if ($b != 0){
           echo $a/$b;
       }
       else {
           throw new Exeption('Division by zero');
       }
    } catch(Exception $e){
      echo 111;
    }
    Ответ написан
    3 комментария
  • Как пользоваться mod_rewrite? Как получить из url.com/foo.php -> url.com/foo?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    1. SEO, если ссылка содержит часть запроса, ражирование выше. Вспомните википедию и на каком она месте по результатам выдачи. собственно наглядный пример: ".рф/никнейм/фотоальбом/весна_2014" что еще более понятно.
    Такая модель очень удобна для ООП. класс/метод/параметры + классам и методам можно задавать псевдонимы.
    2. Mod_rewrite. Без мод rewrite - index.php/foo/bar/ работать будет (смотря какой обработчик запросов). Собственно реврайт и нужен чтобы убрать индекс пхп из строки запроса.
    Нужно будет своими руками делать обработчик таких запросов. в качестве входящих данных будет всего одна строка $_SERVER['REQUEST_URI'] Которую нужно "Взорвать по слэшу" - explode( "/", $_SERVER['REQUEST_URI'] ); собственно массив на выходе и есть "новый $_GET". последствия думаю представите сами.
    3. Можете забыть про $_GET. использование такой технологии равносильно unset($_GET) в первой строке индексного файла. (более подробно о $_GET я писал в этом вопросе - Post и Get запросы, какая между ними разница и что лучше и для каких целей? ).
    Так же появляется зависимость от положения параметра в строке. вы будете использовать вместо строковых ключей массива номер в массиве например if ( isset( $exploded_uri['2'] ) && $exploded_uri['2'] = 'something' ) { }
    4. думаю я уже ответил.
    Ответ написан
    Комментировать
  • Как узнать свои ошибки в верстке?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Ответ написан
    Комментировать
  • Почему так происходит в css?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Я в шоке от местных ответов если честно. куча советов ни одного примера, либо пример который совсем не подходит.
    Так сложно написать вот эти 8 строчек?

    div.red p{
        color: red;
    }
    div.red p.green {
        color: green;
    }

    <div class="red">
       <p>RED</p>
       <p class="green">GREEN</p>
    </div>
    Ответ написан
  • Стоит ли идти работать в компанию где занимаются разработкой сайтов на cms?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Если ты не уверен. иди в такую компанию верстальщиком (html/js). Хапнешь лиха зато поймешь как работать в сфере верстки, а дальше будешь уже наращивать знания в других областях. Не берись быть мастером фломастером на все руки возьми что-нибудь одно и практикуйся и оттачивай свои знания. Не забывай постоянно учится (всегда, даже через 5 лет работы). IT сфера очень динамично развивается тут если не умеешь учится, делать нечего и уже через 2 года твои знания будут частично не актуальны.
    Ответ написан
    Комментировать
  • Что нужно для серверной в кладовке?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    В вашем случае сервис пожаро-тушения невероятно актуален.

    Сколько рассчитывать электро потребление на стойку ?
    В зависимости от потребления юнитами в стойке (у каждого свой). на вскидку по киловатту-полтора на юнит. но лучше всего при расчетах умножать на полтора а то и два от потребления блока питания юнита. Имеется ввиду расчет на максимальную нагрузку на сеть. Чтобы как раз не загореться. Лучше проконсультироваться с электриком который так же не позволит вам поджечь подъезд если большинство ваших соседей повключают микроволновки.
    Ну и конечно бесперебойное питание должно быть, если у вас выключат свет на день клиенты начнут задумываться о смене дц.
    о канале тоже спорный вопрос сколько вы клиенту пообещаете столько и должно быть. минимум 1 мбит на клиента гарантированного канала.
    Ответ написан
  • Как посмотреть скрипты автозапуска Ubuntu?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    предлагаю вам ознакомится с иерархической структурой FHS
    А так же с таким понятием как уровень загрузки системы По последней ссылке вы найдете все необходимое.
    Ответ написан
    Комментировать
  • Можно ли использовать global в php?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    class Test
    {
        public function __construct( & $app )
        {
            $this->app = $app;
        }
    
    }
    
    $test = new Test( $app );


    Вот такой код еще куда ни шло но и он я бы сказал не очень хорош.

    Использовать global можно только в конструкторе класса чтобы присвоить внутренним полям класса глобальные значения. При условии что эти глобальные переменные не объекты, и создаются кодом который находится в большой зависимости, например в index.php на котором 5 лет группа программистов писала код. Естественно поменять такие переменные не всегда возможно (ввиду необходимости глобального рефакторинга). Либо когда это "псевдоконстанты" как я их называю, когда переменной присваивается значение и оно не меняется на протяжении всего выполнения скрипта. В любом другом случае это крайне не рекомендуется.

    Если следовать этому правилу (которое я придумал сам) то в принципе ничего страшного случится не может.
    А вообще лучше всетаки посмотреть в сторону Dependency injection.
    Ответ написан