Ответы пользователя по тегу PHP
  • Не меняется локаль в PHP 7 на Debian 8. Что делать?

    @boodda Автор вопроса
    Ну точно же!
    Ответ написан
    Комментировать
  • Почему Гугл не видит хлебные крошки?

    @boodda
    Хлебные крошки появляются когда у вашего сайта в глазах поисковиков есть определённый авторитет, и в правильную фазу луны, просто ждите.
    Ответ написан
    Комментировать
  • Проблема с выполнением php файлов и единой точки доступа (nginx, php-fpm)?

    @boodda
    как вариант убрать отсюда
    location ~ ^/(index)\.php(/|$) {
    (index) или заменить на
    location ~ \.php$ {
    Ответ написан
    1 комментарий
  • Как в php получить сумму значений массива?

    @boodda
    Помоему ваш код можно существенно сократить

    echo "<center><table style='border-collapse :collapse; border-spacing :0;' border=1>\n";
    echo " <tr><td width ='20'>№</td><td width='50'>Дата</td><td width='200'>Оборудование</td><td width='150'>Проделанная работа</td> <td width='80'>Сумма</td></tr>\n";
    $tehas = mysql_query("SELECT *, DATE_FORMAT(data,'%d.%m.%Y') As data FROM remont_tech WHERE status = 'nomoney' WHERE user = '".intval($myrow['id'])."' ORDER BY data");
    $i = 0;
    $totalPrice = 0;
    foreach($tehas as $tech){
        echo "<tr><td>".$i++."</td><td>".$tech['data']."</td><td>".$tech['marka'].' '.$tech['model'].'('.$tech['serial'].')</td><td>'.$tech['work_id'].'</td><td>'.$tech['sum'].' Руб.</td><tr>';
        $totalPrice += $tech['sum'];
    }
    
    echo"<tr><td COLSPAN=1><b>ИТОГО</b></td><td></td><td></td><td></td><td><b>".$totalPrice." Руб.</b></td></tr>";
    echo "</table></center>\n";
    Ответ написан
    2 комментария
  • Как наказать нерасплатившегося за сайт заказчика?

    @boodda
    Вариант изощерённой мести все таки имеется, внести бекдор типа $a($b) в несколько мест кода, и подождать месяцок, пока бэкапы станут забэкдорены, ну а потом поднять на своём сервере его сайт, а у него поставить на все 301 редирект, сайт свой зарегать в яндекс мастере, и гугл мастере, а на его серваке через пару месяцев все удалить можно все, и вы владелец трафа )
    Ответ написан
    Комментировать
  • Обработка Fatal error в PHP?

    @boodda
    Здесь возможно 2 варианта , первый find возвращает null или false, а второй пытается вызвать у него метод, либо simple равен null или false.
    решение 1
    if(!$simple){
         //выход или throw new \Exception();
    }
    if(!($properties = $simple->find('.b-properties',0))){
         //выход или throw new \Exception();
    }
    if(!($tr = $properties->find('tr'))){
         //выход или throw new \Exception();
    }
    //Действия если ошибок нет и есть блок с ид=b-properties


    Но рассово верно должно быть не проверка на null или false ,а на instanceof ожидаемого объекта
    /*
        сначала выполнится instanceof , потом отрицание "!" перед переменной ,
        так как у instanceof выше приоритет чем у отрицания
    */
    try{
        if(!$simple instanceof Название_объекта){ 
             //выход или throw new \Exception();
        }
        $properties = $simple->find('.b-properties',0);
        if(!properties instanceof Название_объекта){
             //выход или throw new \Exception();
        }
        $tr = $properties->find('tr');
        if(!$tr instanceof Название_объекта){
             //выход или throw new \Exception();
        }
        //Действия если ошибок нет и есть блок с ид=b-properties
    }catch(\Exception $e){
        echo $e->getMessage();
    }
    Ответ написан
    1 комментарий
  • Возможна ли в Doctrine 2 связь нескольких таблиц с одной через промежуточную таблицу?

    @boodda Автор вопроса
    Ну я так понимаю, чтобы воспользоваться DQL , связь таблиц должна быть определена в аннотациях.
    Если использовать в DQL join между Product и I18nString через I18nEntity, которая замаплена на таблицу i18n_entity, то как прописать связь на первичного ключа i18n_entity.id хотя бы в одну сторону на поле i18n_string.entity_id, а если не использовать i18nEntity, то каким образом можно сделать с одного поля i18n_string.entity_id два или более внешних ключа на разные таблицы, так не базе не сделаешь, да и в принципе это как то не верно ?

    то есть правильно должно быть так
    SELECT p.*, i18s.text
    FROM product as p
    INNER JOIN i18n_entity AS i18e ON i18e.id = p.i18n_entity_id
    INNER JOIN i18n_String AS i18s ON i18s.i18n_entity_id = i18e.id AND i18s.language_id = :language_id
    WHERE i18s.text = :name

    В DQL это будет что то типа
    select p, i18s
    FROM \Application\Entity\Product p
    JOIN p.i18nEntity i18n
    JOIN i18n.id i18s
    JOIN i18s.language l
    WHERE l.id = :language AND i18s.text = :name

    но тогда у меня отсутствует связь JOIN i18n.id i18s
    Ответ написан
    Комментировать
  • Странное поведение веб-сервера на nginx+php-fpm?

    @boodda
    ну точно это fastvps ии hetzner. Одно и тоже каждые 2 дня.
    Тупо поставил ежеминутный крон, если (в моем случае), нагрузка по топ > 2, то
    service php5-fpm restart
    Ответ написан
  • Как заставить preg_match_all возвращать действительно все вхождения?

    @boodda
    последний вариант очень быстро) быстрее preg_match явно, а какие 3 символа?
    разделители? или имеется ввиду что по 3 надо тоже все найти?
    Ответ написан
  • Имеет ли смысл полный рабочий день для программиста? Производительность труда?

    @boodda
    Про тех кто работает по 10-16 часов. Такое рвение лет до 25, и то пока не женат, нет детей, родители живы и не болеют, и слава богу так сказать.

    А потом:
    Задерживаешься в течении недели на 3 часа на работе — ты мне изменяешь?! (говорит жена)
    Задерживаешься на 2 часа и не забираешь ребенка из садика — да тебе наплевать на ребенка! (говорит жена) + п.1
    Ты что не можешь отвезти детей в сад и школу? — вообще, ох#$%? — да тебе наплевать на детей! (говорит жена)
    Как это мы не идёт в кино? — вообще, ох#$%? — да тебе наплевать на меня! (говорит жена)
    Что значит ты устал, а я что просто так красное бельё одевала? + п.1
    Вышел в субботу на работу и не отвез родителей на дачу — ты че, сынок, не уважаешь и не любишь родителей ?(говорят родители)
    Ты занят в пятницу вечером… м-м и в субботу вечером!?!, да что ты за друг с тобой даже встретиться и оторваться некогда! в кого ты превратился (говорят друзья)

    Не полный перечень вопросов, которые человек в возрасте ~30лет и лет 5 в браке, получает, если на работе что то проиходит не так.
    Ответ написан
    9 комментариев
  • Как заставить preg_match_all возвращать действительно все вхождения?

    @boodda
    вот это реально не юзабельный и не читабельный велосипед, чуть данные поменялись и все придётся менять.
    Готов предложить конкретно под вас более быстрый и более вменяемый велосипед)

    $s = ' 1 2 3 4 5 6 7 8 9 10 11 12 ';
    $matches = array();
    $exp = preg_split('#\s+#u', trim($s));
    foreach($exp as $key => $piece){
        if(isset($exp[$key - 1])) $matches[] = $exp[$key - 1].' '.$piece;
    }
    var_dump($matches);
    
    Ответ написан
    1 комментарий
  • Как заставить preg_match_all возвращать действительно все вхождения?

    @boodda
    На этой неделе решал точно такую же задачу.
    Адаптировано вашей задаче будет выглядеть так:

    $string = ' 1 2 3 4 5 6 ';
    $out = array();
    while(preg_match('/ \d+ \d+ /', $string, $matches, PREG_OFFSET_CAPTURE)){
        $out[] = $matches[0];
        $string = substr($string, $matches[0][1] + 1);
    }
    var_dump($out);
    


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

    @boodda
    Вам дали ответ, но вот у меня был опыт изготовления именно этой функции, задание на скачивание URL, его обработку и выдачу данных в аккаунт. Решил это так немогу конкретный код сейчас привести, но суть такова:

    Скрипт получая все параметры
    1. вставляет все данные в MySQL со статусом «Ожидает», получает id
    2. скрипт скрипт лочит файл .lock(php ждет если он в данный момент залочен)
    3. открывает файл urls пишет туда ID:URL (ID это который от базы получили) в режиме APPEND
    4. снимает лок с файла
    5. выдает статус «ID: Ожидается» во фронтэнд
    6. завершает свою работу.

    По крону каждые 3 секунды запускается bash скрипт который:
    1. лочит файл .lock
    2. читает файл urls, отрезает оттуда 10 урлов, остальные складывает обратно в файл
    3. снимает лок.
    4. С помощью lynx качается урл, и сразу скидывается на диск (есть ключ для lynx, хотя вы можете закачать wget, смотря какая у вас задача).

    По крону каждые 10 секунд, запускается PHP скрипт который:
    1. открывает папку и получает её листинг
    2. выбираются все задания, статус которых «ожидается»
    3. 30 записей из них помечаются статусом «обработка»
    4. 30 этих файлов обрабатываются, результат по ID(из имени файла) присваивает статус в MySQL «готово», туда же вставляются все данные, которые были получены при обработке
    5. скрипт завершается, удаляя все обработаные файлы.

    Ajax скрипт периодически узнает не готовы ли файлы которые в очереди.
    Ответ написан
    Комментировать