Ответы пользователя по тегу PHP
  • 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 метода вывода денег. вебмани киви и яндекс деньги. Они тоже имеют достаточно хорошую инфраструктуру для вывода налички. ну а дальше уже прочувствовав всю систему оборота денег пытаться искать пути автоматизации обработки заявок. Вывод на пластиковые карты для начала не самый хороший выбор. Лучше подключить для начала системы которые уже умеют выводить на пластик а там смотреть по обстоятельствам.
    Ответ написан
    Комментировать
  • Сложный запрос 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;
          }
    }
    Ответ написан
  • Что за чудеса творится с исключениями 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 комментария
  • Стоит ли идти работать в компанию где занимаются разработкой сайтов на cms?

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

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Если тебе нужен переводчик то тут говорится что ты допустил ошибку и у тебя в браузер уже отправлены заголовки. а следовательно у тебя не может стартовать сессия.
    output started at "/hermes/bosnaweb03b/b201/ipg.ibstorenet/index.php:59"
    Ответ написан
    7 комментариев
  • Как передать php в шаблон smarty через плагин?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    "но как передать в шаблон переменную с объектом и как построить с ней if-else никак не дойдет."
    Вы пытаетесь сделать ужасную вещь. Вот как более или менее надо.
    <?php
    require_once 'Mobile_Detect.php';
    $detect = new Mobile_Detect;
    $is_mobile = $detect->isMobile();

    И переменную $is_mobile передать в шаблон.
    Ответ написан
    Комментировать
  • Система бана на MySql, будет ли это работать?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    таблица users поле ban (boolean) при авторизации получаем это поле если TRUE то высылаем. на страницах к которым есть доступ у пользоателей делаем проверку что пользователь авторизировался. Забаненый пользователь не получает авторизации а следовательно находится на сайте как гость.
    Ответ написан
    2 комментария
  • Как сделать оповещение на сайте с помощью php + mysql + ajax для большого количества пользователей?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Реализация просто ужасная. но если все же нужно то стоит выучить двунаправленные протоколы. через HTTP теоретически и технически ничего хорошего получится не может.

    "на сайте делается запрос аля comet, ожидает ответа, если ответа нет,
    то через 2 минуты делает новый запрос, и все до тех пор, пока цикл php не выдаст ответ."

    Бесполезная трата ресурсов. Если ничего не происходит вы в холостую гоняете циклы. Для справки каждый процесс пхп минимум требует около мегабайта. оперативной памяти (а зачастую больше) Умножте на количество клиентов и вы поймете что отдавать (на вскидку могу сказать что тут будет примерно по 1,4 мб в среднем) около 700 мегабайт оперативной памяти на холостую обработку слишком жирно.

    теперь представим что мы отказались от циклов на сервере давайте запустим цикл на клиенте? А че? просто на джава скрипте каждые 5 секунд отправляем запрос на сервер скрипт обработчик делает запрос на табличку просто на наличие записей с галочкой new. обрабатывается запрос не долго в считаные милисекунды да еще и все-го лишь каждые 5 секунд лепота... Но клиент сволочь! он вздумал средней кнопкой мыши вкладки открывать! Да еще и по 10 штук! да еще и откроет и не закроет и пойдет свою сантабарбару смотреть! Нативный ДДОС самого себя по другому.

    Как бы вы не пытались найти решение. Но самый грамотный и правильный ответ на ваш вопрос - На связке "ajax + mysql + php" реализовать данный функционал технически не возможно ввиду устройства протокола HTTP.
    Ответ написан
    Комментировать
  • Как вывести данные в цикле из mysql?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Укажу старый добрый метод mysql для простоты. А вообще начни не с практики а с мануала php.net/manual/ прочитай минимум один раз а потом уже задавай вопросы. ну или хотябы почитай про массивы.
    $content = array();
    
    while ( $res = mysql_fetch_assoc( $query_result ) )
    {
        $content[] = $res;
    }
    
    print_r($content);
    Ответ написан
    Комментировать
  • Проблема с cookie?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Для ответа не хватает данных. каким образом вы храните данные о авторизации? Если в сессии. то куки не исчезают, просто может протухнуть сессия. То есть первый браузер отправляет идентификатор сессии от которой уже отвязана авторизация для пользователя (либо после выполнения манипуляций с хранением авторизации старая сессия убивается вовсе).

    Собственно текущий ответ как и дальнейшие рассуждения это гадание на кофейной гуще. Дополните исходную задачу описанием механизма авторизации.
    Ответ написан
  • Как получить файл или класс в котором произошло исключение в php?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    php.net/manual/ru/function.set-error-handler.php Это может помочь хотя точно сказать не могу.
    try catch для того и создан чтобы отлавливать заведомо возможные ошибки.
    __FILE__ , __LINE__ - Волшебные константы тоже могут помочь.
    Ответ написан
    8 комментариев