Ответы пользователя по тегу PHP
  • Как скормить большой xml(6MB) php?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Эм... Ну вообще 6МБ это довольно маленький обьем который и в оперативку помещается, так что сверх ничего не нужно. Если этот объем тормозит, так может у Вас не парсинг а сами операции долго проходят?
    Что касается темы - можно загуглить xmlreade large files или "PHP SAX XML" там про stream расскажут... Но по памяти выйдет примерно те же 6 мб
    Ответ написан
    Комментировать
  • Почему текст при заполнении формы не попадает в текстовый файл?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А где у Вас в файле html находится Spisok::create() ??

    Я поместил все в 1 файл и проверил:
    <?php
    class Spisok
    {
       public function create()
        {
            if ($_POST) {
                $Fam = $_POST['Fam'];
                $Nam = $_POST['Nam'];
                $Otch = $_POST['Otch'];
                file_put_contents("abc.txt", $file.$Fam.$Nam.$Otch."\r\n", FILE_APPEND);
            }
        }
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8" />
      <!--[if lt IE 9]><script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script><![endif]-->
      <title></title>
    </head>
    
    <body>
    <?
    $spisok = new Spisok;
    $spisok->create();
    ?>
    <form method="POST" >
        Ваша Фамилия:<br />
        <input type="text" name="Fam"><br />
        Ваше Имя:<br />
        <input type="text" name="Nam"><br />
        Ваше Отчество:<br />
        <input type="text" name="Otch"><br />
        <input type="submit" value="Отправить" name="btn">
    </form>
    <input type="submit" value="Открыть файл" onclick="getdate">
    </body>
    </html>
    Ответ написан
  • Sleep на php тормозит работу всего приложения, php?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Очень тонкий момент и зависит от того кто у вас передает соединение на php. Например при apache prefork тормозит родительский процесс (т.е. если зайти из инкогнито то попадете на другой процесс, если он свободен). Но такой штукой вы можете загрузить все дочерние процессы родительского и не работать будет у всех
    Ответ написан
    Комментировать
  • Выборка товаров по свойству битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А у Вас NEWPRODUCT свойство какой тип имеет ?
    Ответ написан
  • Как ускорить вставку в цикле MySQL?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А у Вас таблица в MyISAM или InnoDB ?
    Ответ написан
  • Какой язык учить после PHP?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Иван, у Вас неверная постановка вопроса.
    Во-первых, ценится не знания языка, а опыт.
    Во-вторых, у меня сложилось субъективное впечатление, что Вы не знаете чего хотите.

    Если Вы хотите быть востребованным специалистом - смотрите на тенденции. Сейчас это анализ данных, DL, машинное обучение. Языковой стек в основном это Python.
    Если Вы хотите разрабатывать игры - C++/C, Java
    Мобильная разработка: Swift, ObjectiveC и т.д.
    Web-разработка: Node.JS, Ruby, PHP
    Из (субъективно для меня) экзотического - Erlang, Rust.
    Ответ написан
    7 комментариев
  • Как написать не равно на php чтобы работало?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А можете прописать перед условием:

    echo "<pre>";
    var_dump($row['MOId'],$cid,$row['Title'], $ctitle);
    echo "</pre>";


    И выложить сюда то, что он выведет. Ну и непомешал бы пример данных, где он не срабатывает (а должен) и срабатывает (а не должен).

    Просто с точки зрения конструкции все логично, может быть у вас там htmlentities есть?
    Ответ написан
    Комментировать
  • Как учиться писать не говнокод?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Мне кажется это бессмысленное занятие - говнокод слишком субъективное и ситуационное явление. Иногда архитектура решения позволяющая изменять бизнес-логику приложения под ежедневно меняющиеся требования бизнеса является говнокодом, несмотря на то что она реализует все требования ( а вот слаженная и четкая архитектура не позволяющая быстро и относительно безболезненную смену бизнес-логики не является говнокодом).
    Насчет последнего (про архитектуру), я конечно мог бы преувеличить, однако я еще не встречал продукта с идеальным кодом или архитектурой. Посмотрите с highload доклад Аксенова (надеюсь правильно фамилию написал) - Снесите это немедленно. Он там достаточно подробно и доступно излагает.
    Ответ написан
    Комментировать
  • PDO Mysql, возник вопрос?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А откуда вы берете $language и $page ?
    Если вы их задаете сами и они не зависят напрямую от пользовательского ввода - пожалуйста!

    Что значит зависят или не зависят напрямую:
    // $page зависит напрямую $_REQUEST['page']
    $page = $_REQUEST['page'];
    
    // $page не зависит напрямую от $_REQUEST['page']
    $page = 'index';
    if ( $_REQUEST['text']=='detail' ) {
    	$page = 'detail';
    }
    Ответ написан
    1 комментарий
  • Memcache в php, кешировать только запросы?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Просто так сказать увы нельзя: все зависит от ситуации.
    Например, если запрос идет 10 секунд, рендеринг и обработка - 2 секунды, и эти данные, на протяжении как минимум минуты актуальны, то имеет смысл кешировать сразу верстку (быстрее будет).
    А вот если запрос протухает уже через 5 секунд, то и кешировать его не стоит.

    Если у Вас запрос быстро исполняется, и запрашивается ну очень часто, то кешировать его будет сама СУБД, в таком случае кеширование в приложении будет излишнем, однако если это сборная солянка из множества таблиц (например сбор отчета), который запрашивается относительно часто, но используется ограниченным кругом лиц (например советом директоров на совещании), то в таком случае можно его закешировать.
    Ответ написан
    Комментировать
  • Как добавить скрытое поле в форму 1C Bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Все зависит от того как это реализовано.
    Может быть это обычная веб-форма, с дефолтным шаблоном (что можно из админки поправить) или веб-форма с темплейтом на html.
    Быть может это кастомная форма и запись в инфоблок.

    Сначала определитесь с какой формой Вам предстоит иметь дело.
    Ответ написан
  • Пишет Class not found. Как правильно определить пространство имен?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Эээ... а что вы сделать то хотите ?

    Я вот о чем говорю: при использовании ООП в bitrix вы сталкиваетесь сразу с 2 большими стенами - применение ооп и битрикс. Прежде чем разбирать конкретный код хотелось бы немножко просветить вас в самой архитектуре битрикса.
    В терминологии Битрикса он использует концепцию MVC, но в рамках битрикса, а это означает что на любой странице где вы общаетесь с ним вы должны подключить пролог (хотя бы prolog_before) и эпилог (хотя бы epilog_after, ну в идеале). Именно "компонент" и является тем самым MVC (Вообще это скорее VC + row access, так как модели по сути нет). Есть класс CBitrixComponent (контроллер) и класс CBitrixComponentTemplate (который совместно с файлами шаблона и образует view).

    Вызов компонента происходит из глобальной переменной $APPLICATION путем метода IncludeComponent. До версии 14 (если мне не изменяет память) вообще не было такого понятия как class.php, где можно было отнаследоваться от CBitrixComponent и перекрыть какие-нибудь функции (шаблонизатор к примеру сменить), а после нового ядра d7 появилась возможность отнаследоваться от CBitrixComponent и в файле class.php разместить свой код (таким образом мы сохраняем и class.php с новыми функциями и component.php с логикой), а перекрывая метод executeComponent вы можете избавиться и от component.php.

    С точки зрения архитектуры (рекомендую изучить документацию, она очень обширна и познавательна) все компоненты должны лежать в так называемом пространстве имен, чем обычно служит ник-нейм или название компании (Естественно начинается не с цифры и содержит только латинские буквы), которые в свою очередь могут располагаться в /bitix/components/#пространство_имен#/#название_компонента#/

    Теперь построчно разберем Ваш вопрос:

    Вы положили свой класс сюда: /bitrix/templates/app/Pi/Test.php, что является неверным с точки зрения архитектуры, так как поместили класс отвечающий за контроллер в папку с шаблоном. Если вы не пишете свой модуль вы можете подключить его например в /local/php_interface/classes/ (пример надуманный, можете просто в /local/php_interface положить или сразу в init.php), однако для этого вы должны будете написать autoloader, так как у битрикса он работает только для модулей. Предположим вы в init.php напишете грубый require_once с файлом.

    Затем вы делаете следующее:

    Что является неверным, так как по сути вы обьявляете неймспейс для файла и это с точки зрения php выглядит вот так в конечном итоге:

    class app\Pi\test extends app\Pi\CBitrixComponent
    {
    // ...
    }

    А класса app\Pi\CBitrixComponent не существует. Так что вам нужно поправить пример хотя бы так:

    class test extends \CBitrixComponent

    Настоятельно рекомендую прочитать документацию или хотя бы посмотреть видео с академии битрикс. Сама система не подарок, а другой программист который увидит ваш код будет говорить что это битрикс виноват.
    Ответ написан
    Комментировать
  • Как сделать в форме отправку прикрепленного файла в (bitrix)?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если не хотите писать рутинные вещи, то для таких вещей в 1С-Битрикс есть Веб-формы. Один раз делаете "натяжку" дизайна на форму, а потом плодите сколько-хотите вопросов.

    А вообще у сервиса веб-форм есть свои плюсы и минусы:
    + Один раз настраивайте форму и "масштабируйте" (увеличивайте число полей) просто
    + Для форм есть своя логика и о валидации не надо думать, большая часть работы сделана за вас
    + В них заложена логика обмена с crm и права доступа
    - Работа модуля не совсем проста, придется покопать документацию
    - О валидации все-таки нужно думать, так как шаг влево и проще будет написать на голом php
    Ответ написан
    Комментировать
  • Как верно отрабатывать ошибки для ответа API?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А если используется rest, то можно возвращать просто текст и 400 ошибку.
    Ответ написан
    Комментировать
  • Почему PHP бросает ошибки в Windows-1251?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если вручную поставить в браузере кодировку Кириллица (Windows), то текст нормально отображается.

    Именно. PHP и возвращяет вам ответ в UTF-8, однако ваш браузер читает и пытается отобразить его как windows-1251.

    А что касается кириллицы, то D:\��� �������\ - вы запускаете тестовый сервер на windows ? Для теста вы и так знаете где он лежит, а вот для production все-таки стоит перейти на linux и избавиться от кириллицы.
    Ответ написан