Ответы пользователя по тегу PHP
  • Почему не работает запрос в БД?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    $NameVideo = $_POST ['name'];
    $idVideo = $_POST ['message'];
    echo $NameVideo;
    $db = mysql_connect("localhost","d9",774272722");
    mysql_select_db("dlx",$db);
    mysql_query("SET NAMES utf8");
    $resultat = mysql_query("INSERT INTO `dlx`.`videoByMe` (`id`, `DenumireaVideo`, `VideoMixID`) VALUES (NULL, '$NameVideo', '$idVideo')"); // тут был бардак с кавычками
    if(!$resultat){
     var_dump(mysql_error()); // тут скорее всего ругнётся, что id не может быть NULL
     exit();
    }
    mysql_close($db);
    Ответ написан
    Комментировать
  • Почему сервер не дает подключаться к сайту в несколько потоков?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    1) лимит на количество соединений с одного ip заданы обычно где то или в iptables или в apache, вариантов задания этого ограничения много
    2) ограничение времени выполнения задано или в apache или скорее всего в php.ini достаточно увеличить max_execution_time
    Ответ написан
  • Как достать из ссылки тот кусок, который нужен мне?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Если вопрос о правильной работе oauth, то настраивая подключение у провайдера oauth вы должны заполнить callback url, т.е. адресс на который провайдер будет делать ридерект.

    Если про то как вытащить переменные из http запроса когда пользователь находиться на не вашем сайте, то ответ: никак.

    Если вопрос про то как вытащить переменные из текущего http запроса то они все в глобальный переменных $_GET $_POST $_COOKIE и регулярками их точно доставать не нужно.
    Ответ написан
    Комментировать
  • Правильное определение свойств в классах(php)?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Всё это можно и нужно делать в function __construct(){}
    Ответ написан
    1 комментарий
  • Падают демоны на PHP (Apache + Nginx), в чем причина?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Тут видимо logrotate говорит апачу пора рестартиться и он исполняет.
    Ответ написан
    4 комментария
  • На чем сделать поиск?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Тут нет заумного поиска, просто будет обычный списочный контент + SQL запрос с двумя параметрами и двумя диапазонами для фильтра. Пишете на том что более понятно, т.к. объём знаний о том как работает любая цмс, он явно выше этой простой задачи.
    Ответ написан
    Комментировать
  • Насколько важно сейчас начинающему веб-разработчику разбираться в SQL досконально?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Реализация ORM обычно такова, что это тот же SQL синтаксис только в виде объекта вызовов методов объектов.

    1. В простых случаях, что то типа: User::findAll()->where(['id'=>10])
      Это как бы прикольно, но тот же SQL: SELECT * FROM user WHERE id =10 не выглядит более сложным.
    2. Join, ORM как бы скрывает джойны:

      $UserCollection = User::findAll()->where(['id'=>10]);
         foreach($UserCollection as $User){
            if($User->ProfileSetting->is_enable == 'yes'){
               doSomething($User);
            }
         }

      Тут как бы скрыто то, что запрос происходит к двум связанным таблицам (user и profile), это достаточно в многих случаях, но в любом случае это не круто, т.к. вы не знаете какой запрос или запросы генерит ORM и не понимаете, что происходит на самом деле.
    3. Внешний вид запросов в объектном представлении становиться тяжёлым для восприятия даже для запросов средней сложности, с SQL таких проблем нет.
    4. Для сложных запросов ORM не даёт ни чего, кроме варианта писать тот же SQL.


    ORM имеет серьёзные преимущества в кодогенерации, в написании автоматизированных тестов.

    Если у вас есть какие то планы стать не начинающем разработчиком, то вам неприменимо нужно начать разбираться как работают базы данных в целом, т.е. понимание реляционной алгебры (это по сути и есть SQL), и понимание того, что стоят запросы (насколько нагружают диск/процессор).

    Так происходит потому, что по мере роста вашей квалификации у вас будут пропадать сопутствующие задачи типа вёрстки и js, готовую архитектуру вам навяжут фреймворки, а вашей основной задачей будет манипуляции с небольшими блоками данных хранящимися в больших массивы данных.
    Ответ написан
    Комментировать
  • Как правильно хранить json c кирилицей в MySQL?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    У вас слеши пропадают на уровне php, это видимо можно проверить прогнав str_replace('\\u','\\\\u',json_encode($data));

    Глюки на уровне Mysql можно прореветь переведя тип поля в которое пишется json в тип blob, если стало ок, то что то не так с кодировками в базе или соединении с ней.

    json_encode($massx,JSON_UNESCAPED_UNICODE); не решит проблему со слэшами, они используются не только для юникода
    string.gif

    Дополнено:

    слеш в строчках служит для написания непечатных/управляющих кодов в виде букв. Это не mysql это везде так. Например \t это не слеш + t (два символа), это один символ табуляции. так же и \u это не два символа а один, чёрт пойми какой.

    если вы сделаете insert into t set col = 'a\n\n\nb'; а потом select col from t; то вы уведите:
    a

    b
    т.е. три пустые строки межу a и b, если вы хотите сохранить само сочетание \n, то нужно писать insert into t set col = 'a\\n\\n\\nb'; Тогда при селекте будет a\n\n\nb, т.к. для того, что бы закодировать слеш в строке его нужно экранировать тем же слешем. Это нормально.
    Ответ написан
    3 комментария
  • Каких знаний php для верстальщика будет достаточно?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Надо знать вот эти штуки: if, foreach, echo, <?=$var ?> - это всё. Остальное нюансы конкретного проекта вам разъяснит программист максимум за пол часа.
    Ответ написан
    Комментировать
  • Почему не работает регулярка?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    "~regexp~iu" - нужно добавить модификатор u это значит utf8.
    и соответственно проверить, что исходник и приходящая на проверку строка в utf8
    Ответ написан
    Комментировать
  • Как работают таймеры в играх?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Вариантов много, в зависимости от качества соединения, приемлемости лагов и возможностей мошенничества.
    Но нужно понимать что анимацию в таких играх на сервер не завязывают, игровой сервер отвечает за корректность изменения состояний игрового мира и может выдать текущее состояние игровых объектов.

    В общем случае суть где то такая:
    1) на сервер отсылается запрос "посадить_укроп_в_грядке_с_координатами(5,5)"
    2) Сервер, запоминает состояние грядки в координате 5,5 и присылает ответ, что всё ок, расти будет 300 секунд.
    3) Клиент запускает таймер на 300 секунд, по которому будет меняться анимация того как растёт укроп
    4) По истечению 300 секунд клиент переводит укроп в координатах 5,5 в состояние "готов к уборке"
    5) Пользователь жмёт собрать укроп, на сервер уходит "собирать_урожай_в_координатах(5,5)"
    6) Сервер проверяет, что прошло достаточно времени (т.е. 300 секунд +/- лаги) и даёт ответ, что да можно собирать укроп. И сохраняет состояние грядки как пустая, а укроп перекидывает в амбар.

    Так же стоит отметить, что секунда на сервере, ещё кое как, близка астрономической, но вот 1 секунда на JS в браузере может быть какой угодно.
    Поэтому никто секунды не считает, считают дельту по времени.
    Т.е. создают объект на который в котором запоминаются таймауты в секундах, текущее время и функции которые будут вызваны по их истечению. Потом setinterval/setTimeout допустим раз в 1 сотою секунды проверяет дельты текущего времени к сохранённым в этом объекте, и если дельта больше чем таймаут то дёргает функции обработчики.

    Для начального варианта сетевого протокола достаточно просто отсылать HTTP запросы по событиям, по мере роста проекта будет понятно в какую сторону оптимизировать протокол т.к. вариаций тут реально много.
    Ответ написан
    Комментировать
  • Как ускорить адаптацию сайта?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    В бутстрапе вообще не стоит использовать то, что есть напрямую.
    В бутстрапе нужно брать LESS/SASS и там наследовать и переопредлять нужные классы и генерировать нужные размерности сетки для каждого случая. То что там по дефолту это для очень быстрых прототипов или очень простых задач. В целом бутстрап это LESS/SASS фремворк который значительно упрощает работу верстальщика.

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

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    1) Сомневаюсь, что вы используете mysql 3-ей версии, а ведь исключительно для поддержки совместимости с этим старым хламом расширение mysql ещё есть в некоторых не свежих версиях пхп. А так оно устарело в районе 5-10 лет, используйте mysqli.
    2) у вас расхождение в вопросе, в скрипте вы смотрите количество строк в ответе, а при при выполнении запроса руками смотрите на результат. Тёплое с мягким не находите?

    3) Ваша проблема в кодировках, а правильный вопрос почему не ищет кириллицу. Ваша проблема скорее всего в неверном character set и collotion на стороне mysql, которые могут быть выставлены на уровне сервера, бд, таблицы и поля (если не определено внизу, то берётся значение сверху). И ещё более вероятно, что вы залили или пишете utf дамп/данные в базу которой кодировка latin или cp1251 (они обе совпадают с utf8 в части латиницы) в этом случае на клиенте всё как бы ок, а кириллицу mysql не понимает.
    Ответ написан
    Комментировать
  • Cron каждую секунду, начиная с определенной даты?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    например пишете в консоле типа такого
    echo "while true ; do ./my-script & ; sleep 1; done" | at -t 02181200

    Запуститься в 18 фев. в 12:00
    Но не совсем раз в секунду, будет время работы my-script + пауза в одну секунду
    Ответ написан
    Комментировать
  • Как отследить вызов метода объекта PHP?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Неужели единственный способ - это в каждое объявление функции прописывать static::createInstance()

    Можно написать класс обёртку, но зачем?
    Если вам для двух статичных методов нужен одинаковый конструктор, то вывод напрашивается сам собой, вам не нужны статичные методы.

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

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    ini_set('session.cookie_domain', '.site.ru' );
    Ответ написан
    Комментировать
  • Компрессия картинок на вашем сайте. Как реализовать?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    1) Гугл JS-сом сравнивает реальный размер картинки и тот в котором он отображается.
    2) Он обязательно вырезает мета информацию из файла картинки, она в некоторых случаях может быть больше больше самой картинки.
    Потом для jpeg, где предусмотрен параметр сжатие/компрессия от 0 до 100, скорее всего ругается если он больше 70-75. Т.к. от 75 до 100 разницы обычно не видно, а размер заметно меньше. (100 это без сжатия)

    Для png можно менять битность (8,16,24,32,48,64) изменить, если она используется не эффективно. Битность это количество битов используемое для кодирования одного пикселя от неё зависит количество доступных цветов и глубина альфаканала. Т.е. png8 это 256 цветов без альфы. Параметра компрессии у png нет.

    Для GIF это от двух до 256 цветов в заказной палитре, чем меньше цветов палитре тем меньше файл.

    Соответственно автоматическая оптимизация для PNG и GIF может быть только путём анализа цвета в каждом пикселе, на лету это муторно и ресурсоёмко. И соответственно этим почти никто не заморачивается.

    Так же у этих форматов есть несколько доп опций, которые так же влияют на размер картинки, но не значительно.
    Ответ написан
    5 комментариев
  • Подсчет чужих кликов, возможно ли?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Для этого пишут расширения для браузеров. Или сервисы счётчиков или каких нибудь social button и т.п.
    Соответственно в распространение такого счётчика вливают много денег.
    Путей без много денег нет.
    Ответ написан
    Комментировать
  • Серверные языки - как не запутаться и что изучить?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Открываете справочники названных языков, раздел с синтаксисом и выбираете то, что нравится, а дальше там +/- одно и тоже.
    На любом из этих языков пишут и простые и не простые сайты.

    Для программиста (а не кодера) нет проблем использовать новый язык в известной ему предметной области.

    Update:
    К тому моменту когда вы разберётесь с синтаксисом языков вам будут понятны абстракции которыми можно оперировать на данном языке. Дальше просто выбираете тот вариант который вам ближе, в котором вам комфортнее. Т.к. дальше с использованием этих абстракций и конструкций языка, на любом языке, вы будете решать одни и те же задачи и большинство из них будет взять из базы, трансформировать засунуть в шаблон, остальная часть задач, типичной серверной разработки, особым разнообразием так же не отличается.

    Если вы в целом заходите развиваться как программист, то стоит смотреть в ASM до уровня понимания того как работает процессор и память, Си(без плюсов) до уровня понимания базовых типов данных (указатели, списки, кучи, хеши и т.п.). Параллельно осваивать разделы математики на которых базируется программирование: дискретку, графы, конечные автоматы, кодирование, и как бонус на будущие теории: трансляторов, надёжности и БД. Это займёт от полугода, на выходе вы будете воспринимать ЯП как множество доступных вам инструментов для решения любых задач в понятных вам прикладных областях.
    Ответ написан
  • Проблема с сокетами Ratchet, React. Сессия открыта - данных нет?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    посмотреть ограничение кол-ва файлов в ядре: cat /proc/sys/fs/file-nr
    посмотреть ограничение накладываемые через PAM: uname -a и соответствующие настройки в /etc/security/limits.conf и убедиться что модуль pam_limits управляющий ими загружен

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

    х.м. это всё если у вас Linux
    Ответ написан
    4 комментария