• Существуют ли в природе реализации блокчейн на PHP от и до?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    В основе блокчейна лежит дерево Merkle. На такой структуре данных уже есть хранилища. Например Amazon Dynamo, Riak.

    Реализовывать БД на PHP - абсурд.
    Ответ написан
    Комментировать
  • Чем плохо использовать Crossdatabase foreign key?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Без пруфов, просто информация для размышления.

    Foreign Key Constraint при операциях над таблицей в которой есть Constraint , обязывает смотреть и поддерживать консистентность с записями, которые являются ключами. Это 'on Delete', 'on Update'. То есть операции вставки и обновления теряют в скорости. (хотя мы получаем профит в виде контроля целостности и непротиворечивости данных)

    • Когда Constraint смотрит на другую базу данных, время на взаимодействие растет сильнее.
    • Теряется область видимости согласованности данных на уровне ЯП - части системы могут изолированно работать только с одной БД и не иметь влияния на всю распределенную систему хранения данных. То есть мы имеем механизм контроля согласованности на уровне БД, но на уровне ЯП мы не имеем явных указаний на то, что изменения в нашей модели распространятся на другие БД. Не можем удалить какой-то entity, потому что на него наложен Constraint, а наш контекст не позволяет заглядывать в другую БД.
    • Нарушается доступность - отказ одной из БД приводит к падению всех Constraint на рабочих БД.
    Ответ написан
    Комментировать
  • Как переделать или доделать фильтр поиска?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    А у вас включено отображение ошибок?

    $servers[ $i ][ open_date ] > $date

    open_date - это строка или константа?
    Строки пишутся в одинарных или двойных кавычках.
    Константы - капсом.

    $servers[ $i ][ 'open_date' ] > $date

    UPD
    А вообще, прочитайте комментарии к коду. Он не будет работать как вы задумали.
    <?php
    
    for($i = 0; $i < $count; $i++){
      $servers[ $i ];//Что это?
      if( ( $servers[ $i ][ 'open_date' ] > $date ) && ( $servers[ $i ][ 'allow' ] == 1 ) ){
        $servers_notopened[] = $servers[ $i ];
      }elseif( isset( $_POST['chronicles'] ) && isset( $_POST['raites'] ) ){
        for($i = 0; $i < $count; $i++){//У нас for $i, надо использовать $j 
          $servers[ $i ];
          if( ( ( $servers[ $i ][ 'open_date' ] > $date ) && ( $servers[ $i ][ 'allow' ] == 1 ) )//Мы тут \DateTime сравниваем?!
            && ( ( $servers[ $i ][ 'chronicles' ] == $_POST['chronicles'] )
              && ( $servers[ $i ][ 'raite' ] == $_POST['raites'] ) )
          ){
            $servers_notopened[] = $servers[ $i ];
          }
        }
      }
      if( ( $servers[ $i ][ 'open_date' ] == $date ) && ( $servers[ $i ][ 'allow' ] == 1 ) ){
        $servers_today[] = $servers[ $i ];
      }elseif( isset( $_POST['chronicles'] ) && isset( $_POST['raites'] ) ){
        for($i = 0; $i < $count; $i++){//Есть for по $i,$j используем $p 
          $servers[ $i ];
          if( ( ( $servers[ $i ][ 'open_date' ] == $date ) && ( $servers[ $i ][ 'allow' ] == 1 ) )
            && ( ( $servers[ $i ][ 'chronicles' ] == $_POST['chronicles'] )
              && ( $servers[ $i ][ 'raite' ] == $_POST['raites'] ) )
          ){
            $servers_today[] = $servers[ $i ];
          }
        }
      }
      if( ( $servers[ $i ][ 'open_date' ] < $date ) && ( $servers[ $i ][ 'allow' ] == 1 ) ){
        $servers_opened[] = $servers[ $i ];
      }elseif( isset( $_POST['chronicles'] ) && isset( $_POST['raites'] ) ){
        for($i = 0; $i < $count; $i++){//Есть for по $i,$j,$p используем $q 
          $servers[ $i ];
          if( ( ( $servers[ $i ][ 'open_date' ] < $date ) && ( $servers[ $i ][ 'allow' ] == 1 ) )
            && ( ( $servers[ $i ][ 'chronicles' ] == $_POST['chronicles'] )
              && ( $servers[ $i ][ 'raite' ] == $_POST['raites'] ) )
          ){
            $servers_opened[] = $servers[ $i ];
          }
        }
      }
    }
    Ответ написан
  • PHPStorm.Как изменить цвет панелей?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Поставьте плагин.
    Цвет панелей совпадет с основным бекграундом. И надо перезапустить IDE после смены цвета.
    Я пользуюсь светлой темой, а поэтому приглушил белый цвет панелей.
    https://plugins.jetbrains.com/plugin/7055?pr=clion

    Можете еще поставить этот. Он добавляет немного фиксов артефактов. У меня правда не бывало проблем. Смотрите на совместимость с вашей версией сторма.
    https://plugins.jetbrains.com/plugin/7081?pr=
    Ответ написан
    Комментировать
  • Ошибка PHP - в чем дело?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Вы пытаетесь echo $data или $a = $headerHtml . $data . $footerHtml, где $data это экземпляр класса SimpleXMLElement.
    В классе SimpleXMLElement не иплементирован магический метод __toString()
    Ответ написан
    3 комментария
  • Как записать переменную в сессию?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    А вы стартанули сессию?

    Без этого, поведение глобального массива $_SESSION будет довольно неприятным. Жизнь сессии будет равно продолжительности выполнения скрипта.
    Ответ написан
    5 комментариев
  • Стоит ли в PHP в функциях или методах класса закрывать объявленные переменные, для экономии памяти и ЦПУ?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Допустим у вас онлайн-магазин мобильной техники. Есть сущность $item, которая является экземпляром класса Goods.
    В бизнес-модели - это товар. Мы его отобразим на странице каталога как html и больше нам ничего не надо.
    Допустим наш объект занимает в памяти 500кБ. Если на странице 100 товаров, то мы уже заберем 50мБ на скрипт.
    Но нам нужен экземпляр класса, только чтобы отрендерить его html. Сборщик мусора удалит объект только если на него нет больше ссылок. Но пока мы дойдём до рендера самого html мы заимеем этот $item в классе Catalog, CatalogFilter, в ORM.

    Конечно надо руками чистить объекты. Это сильно снизит потребление памяти. Но на самом деле чистить надо только такие "утечки", а не всё подряд.
    Ответ написан
    Комментировать
  • Как вытащить число из строки?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    <?php
    function returnNumberFromLastWord($str) {
    
      $lastWord = array_pop( explode( ' ', $str ) );
    
      if( false !== strpos( $lastWord, '>' ) ){
        $lastWord = substr( $lastWord, strpos( $lastWord, '>' ) + 1 );
      }
      $number = filter_var( $lastWord, FILTER_SANITIZE_NUMBER_INT );
      return substr( $number, strlen( $number ) - 14 );
    }
    //////////////////////////////////////////////////////////////////////////////////////
    $a = '159111/08/199915 -BPOSS CS PG1 1>400010516305897TEXTYU';
    $b = 'IVAN PUPKOV 1179010/27/2011HOLD-BMAN/DEL CS PG0100010515465174LIALIA';
    
    echo $a, '<br>';
    echo returnNumberFromLastWord($a);
    
    echo '<br>';
    
    echo $b, '<br>';
    echo returnNumberFromLastWord($b);
    Ответ написан
    Комментировать
  • Как узнать страну по временной зоне или часам?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Время может быть одинаковое на разных континентах.
    timezone16.gif

    Только база IP.
    Ответ написан
    Комментировать
  • Как правильно сделать кеширование?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Вводим слой кеша и интерфейс для работы с ним. Это важно, потому что легко позволит переключатся между различными реализациями.
    Система хранения кеша должна быть общей для всех процессов PHP. (Пространство ключей)
    Конкретная реализация может быть выбрана, поменяна, попробована другая. Начните с Memcache, легко сможете попробовать Redis, если понадобиться что-то посложнее ключ-значение.

    В кеш складываем готовый html. Потому что генерация html довольно затратный процесс.
    Magento вообще подходит радикально к этому - кеширует все и аяксом подгружает юзер-зависимые блоки (корзину).
    Ваш слой кеша позволит инвалидировать данные по событиям. Expiration-time, on-update, on-sale и т.д.
    Ответ написан
    Комментировать
  • Насколько затратно так использовать подключения к базе данных sql?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Но я знаю каким людям это будет нужно, так как у них перед этим в sql базе данных есть специальное значение
    Вы в любом случае вытаскиваете авторизационные данные и сохраняете в сессию. Заджойните признак (UI-маркер) отображения меню.
    Если у вас нет какой-то ролевой/групповой модели доступа, то создайте UI-маркеры - что для этого пользователя отображать.

    Конечно подход решил не заморачиваться имеет право на жизнь. Но надо быть дисциплинированным.
    Ответ написан
    5 комментариев
  • Как решить задачу с Shared hosting,CSV,php на новый год?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Импортируйте из файла построчно. Каждые 5 минут 100 строк (например).
    Организуйте хранение указателя строки в БД/memcahce.

    -------------

    Можете попробовать тротлить через usleep()
    $z=0;
    foreach($data as $k=>$v){
    
      $z++;
      if($z===50){
        $z = 0;
        usleep( 200000 );// 0,2 sec
      }
    }
    Ответ написан
  • Как исправить update-запрос?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    UPDATE `users` SET `first_name`='value-1',`last_name`='value-2',`email`='value-3',`facebook`='value-4',`silka`='value-5',`vkon`='value-6' WHERE TABLE_NAME='users'


    Вы забыли обернуть строки в одинарные кавычки.
    `first_name`=value-1 - неправильно.
    `first_name`='value-1' - правильно.
    Ответ написан
    Комментировать
  • Можно ли именовать php-скрипты и папки с использованием кириллицы?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Нет. Хорошая практика программирования исключает использование кириллических имён. А зачем вам плохая практика?
    Ответ написан
  • Объявить пустой массив php?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Это описывается в руководстве.
    php.net/manual/en/function.array.php
    <?php
    $firstquarter = array(1 => 'January', 'February', 'March');
    print_r($firstquarter);
    ?>


    Как вариант, можете после наполнения массива, вставить в начало элемент, и убрать. Что двинет все ключи на 1.
    $array = [1,2,3];
    array_unshift($array, '' );
    unset($array[0]);
    Ответ написан
  • Как вывести массив значений столбца базы данных под тег?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Ответ написан
    Комментировать
  • Запрос работает неправильно. В чем причина?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Выполните чистый SQL запрос в phpMyAdmin. Вы используете LEFT JOIN, поэтому записи из news получите все. Проблема в запросе может быть только с $limit. Если нет ошибок в лимите, а чистый запрос достает 3 новости, то ищите проблему дальше по коду. В контроллере или отображении.
    Ответ написан
  • Как подписать и защитить данные запроса?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    Не хочется усложнять до уровня бреда.

    К сожалению, вам придется написать некоторую обертку для шифрования\дешифрования защищаемых сегментов. Если вы сможете это сделать так, чтобы код был гибкий и реиспользуемый, то это не будет бредом.

    В частности, вы сможете сменить алгоритм шифрования на менее затратный по процессорному времени.

    Я бы отказался от return base64_encode($nonce.$ciphertext); в пользу транслирования каждого байта шифртекста в hex (например), или вообще в какую-то 25-тиричную систему (англ. алфавит).
    Ответ написан
    Комментировать
  • Почему не проходит запрос к БД?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    В Гарри Поттере было заклинание "круциатус". При изучении представленного кода я испытал его на себе.

    А теперь об ошибке. Вы были любезны и не скрыли на своем сайте вывод ошибок (что является плохим тоном на рабочем сервере). Но в целом, можно увидеть что ошибка заключается вот в чём.

    Warning: mysqli_query() expects parameter 2 to be string, object given in /home/virtwww/w_novum-sibopt0_e83967c7/http/inc/vam_db_query.inc.php on line 34

    Catchable fatal error: Object of class mysqli_result could not be converted to string in /home/virtwww/w_novum-sibopt0_e83967c7/http/inc/vam_db_error.inc.php on line 28

    Вы видимо в какой-то момент хотите получить результат запроса, и обращаетесь к нему как к строке, а не объекту.
    Ответ написан
  • Где может быть ошибка в запросе?

    elevenelven
    @elevenelven
    Php Dev @ Amadeus
    А вас не смущает, что если не придет, скажем $_POST['vs'], то у вас не будет переменной $vs.
    А ниже по коду вы к ней ($vs) обращаетесь. Это Notice - Undefined variable и неконтролируемое поведение.

    Кроме того вы прямо в тело запроса пихаете ввод из POST. Это прямой путь к SQL-injection.
    Ответ написан