PHP Developer's Journal (original) (raw)

Как правильно писать из php в stderr? [03 Jun 2019|04:12pm]
Я использую на своём веб-сайте Wordpress с plugin'ом "LiveJournal Crossposter Remake", который копировал мои посты в LJ, а потом в DW. Но недавно он почему-то перестал это делать, хотя ни на самом сайте, ни в логах никаких ошибок не виднеется.Я решил в том скрипте приделать записи в apache'вский error_log, чтобы последить, какие функции там запускаются, и что они делают, и увидеть, какие функции там не работают.Вроде бы для записи в error_log, из PHP достаточно просто писать в STDERR:fwrite(STDERR, "message\n");В тестовом скрипте, который я вручную запускал, это вполне работало,а в том livejournal-crossposter-remake.php почему-то вовсе не сработало,в error_log'е вместо них появилась куча сообщений об ошибках в этом PHP-скрипте:[error] [client мойIP-адрес] PHP Warning: fwrite() expects parameter 1 to be resource, string given in /path-to/www/blog/wp-content/plugins/livejournal-crossposter-remake/livejournal-crossposter-remake.php on line 99и про остальные строки этого скрипта, куда я добавил такой fwrite()..Погуглил, как вручную обратиться к stderr, и добавил в начале скрипта:$STDERR=fopen('php://stderr', 'w');А в функциях вот так:global STDERR;fwrite(STDERR; fwrite(STDERR;fwrite(STDERR, "message\n");вроде уже работает.Так что же не так с оригинальным fwrite(STDERR,...) ?
12 comments|post comment
Redis, странное [14 Feb 2016|12:20pm]
Коллеги имеющие Redis в хозяйстве, прошу, проверьте, не имеется ли в Ваших базах следующих данных:1. Строка 'counter:__rand_int__' значением '100000'2. Строка 'key:__rand_int__' значением 'xxx'3. Список 'mylist' с 100000 записей содержащими 'xxx'Если появилось, то прошу отписать версию Redis и какой коннектор используется.Спрашиваю потом, что на доступных мне инстансах Redis таковые появились и откушали по 6.2МБ. Версии Redis от 3.0.3 до 3.0.7 под Ubuntu 12.04 и 14.04, инстансы на разных серверах и в разных сетях, в том числе без доступа к инету и в единоличном пользовании, поэтому взлом и шутки коллег исключаются. Единственное, что объединяет, кроме самого Redis и Redis-Cli - PHP-коннектор PHPRedis и вебморда phpRedisAdmin - они пока тоже под подозрением.UPD: Спасибо dil, оказывается, это redis-benchmark за собой не убирает.
2 comments|post comment
[19 Jan 2016|10:59pm]
Вот вы сидите тут, и не знаете, что в internals идут жаркие бои вокруг предполагаемого к принятию Морального кодекса строителя коммунизма.Всегда полагал, что Феррара способен только лицом торговать, а теперь окончательно в этом убедился. Вот почему больше всего кричат те, от кого меньше всего практической пользы?
post comment
Парсер почты за деньги [24 Nov 2015|10:48am]
Добрый день.Имеется задачка: получить с почтового ящика письма и провернуть с каждым из них следующие действия:1. Распарсить заголовок2. Если письмо отправлено с определенного адреса, то:2.1. Сохранить на диск2.2. Получить текст (если это html-письмо в base64 - раскодировать)2.3. Распарсить по содержимому2.4. Выдать результат парсингаВ принципе, все по отдельности гуглится. Но времени компилировать "до кучи" совершенно нет.Кто возьмется сделать? Бюджет - 4 килорубля.
7 comments|post comment
Быстрая работа с массивами или множествами [05 Nov 2015|08:56am]
Есть ли какието способы ускорить работу с массивами (пересечение, объединение)?Или может даже реализовать множества.Массивы содержат числа. Т.е может можно как то указать - что это массив типа int чтобы ускорить.сейчас стандартные array_intersect + array_merge дают в среднем ~0.02 с на ~10 операциях объединения/пересеченияразмер массивов ~500 элементовпока хватает и этого, но понятно что с возрастанием кол-ва элементов и операций время будет возрастать (до 100000 хотябы).нужно решение в PHP. знаю что можно поставить redis но нет возможности (shared хостинг)
15 comments|post comment
opcache php 5.6 и require [22 Sep 2015|11:56am]
например включен opcacheя подключаю require 'some-file.php';эти данные закешируется пока файл не поменялся или будет каждый раз парсить и подгружать?$cache = require 'cache/key1.php';во второй раз берется из кеша?$cache = require 'cache/key1.php';насколько эффективный такой способ использования opcache в качестве кеша для храения какито результатов.или надо явно использовать функции opcache ?
6 comments|post comment
поиск по характеристикам - zend-search-lucene vs mysql plain [01 Jun 2015|08:06pm]
например я делаю колонки в mysql 100 штук (чтб на все случаи) - 1 плоская таблицапихаю туда характеристики товаров.помогут ли тут еще индексы когда много колонок?и делаю обычный sql запрос prop1 = 'x' and prop2 = 'y' и т.дили юзаю этот чудо движок на php и создаю индексы их товаров. тут естественно колонок не 100 а только какие нужны.кто трогал zend-search-lucene, оно будет лучше вышеописанной структуры mysql?ставить другие движки типа solr и прочее нет возможности на проект. только php mysql...
6 comments|post comment
[14 May 2015|06:32pm]
print floor(log(1000, 10)); # => 2UPD: Норм, живём.print floor(log10(1000)); # => 3
35 comments|post comment
Постоянная работа для php yii программера. Москва [04 May 2015|12:52pm]
Постоянная работа для php yii программера. Москваphp программист для работы в офисе.Обязанности:Поддержка и развитие существующих проектов;Разработка новых проектов.Требования:Уверенное знание Yii, PHP, MySQL;Навык работы в консоли *nix систем;Опыт написания систем, работающих под нагрузкой;Понимание общих архитектурных принципов и шаблонов проектирования;Опыт использования любой системы контроля версий (SVN, GIT и т.д.).Неоспоримыми плюсами будутЗнание MongoDB, Node.js, PDO, SPL, Yii2, JavaScript, jQuery, SQLУсловия:Восьмичасовой рабочий день, 5-дневная рабочая неделя;Современный офис в центре Москвы (метро Тверская, Пушкинская, Чеховская), молодой дружный коллектив;Посещение фитнес рядом с работой, возможность повышения квалификации;Зарплата (обсуждается индивидуально с каждым на собеседовании).Для заинтересовавшихся:Имеется техническое задание.
post comment
timezone [28 Mar 2015|08:40pm]
Напомните мне, пожалуйста, как php из состава денвера объяснить, что летнего времени больше нет? Менять название часового пояса не хочется, т.к. есть привычка использовать формат "дата время msk".Как я понял timezonedb у него внутренняя, а не отдельной .dll, т.е. обновить ему базу часовых поясов просто так не удастся.Старый фокус с set TZ=EST+3EDT0 не помог. http://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
6 comments|post comment
[25 Feb 2015|10:04pm]
PHP - язык, который помог встать мне на ноги! правда. Чуть больше десяти лет я с переменным успехом зарабатывал с его помощью. Было и по два и по году бросал все и вообще не подходил к компу)) но в итоге последние 4 года именно с помощью РНР я зарабатываю не плохие деньги, по крайней мере обеспечиваю себя с горкой. Но, признайтесь, он ужасен. Снова бросил.
13 comments|post comment
вакансия php-программиста на удалённую частичную занятость (8-16 часов в неделю): Yii, Umi.cms [03 Feb 2015|08:05pm]
Мой родственник, владелец небольшой фирмы,ищет php-разработчика на удалённую работудля доработки сопутствующего проекта.php, js, jQuery, Apache, mysqlФреймворки Yii и UMI.cmsПомесячная оплата 17'000-20'000 руб/мес.Проект рассчитан на год.По всем вопросам пишите Антону на адресantony зверь adminprofi точка ruPS фирма в мск, если это Вам важноupd Извините, была ошибка в адресе, в домене: правильно adminprofi upd2: Спасибо всем откликнувшимся. Вакансия закрыта.
post comment
так GMT или UTC [18 Dec 2014|01:05am]
PHP 5.3.13Такое впечатление, что PHP не знает разницы между GMT и UTC.Unixtime базируется именно на шкале UTC, вместе с её секундой координации.Однако же a=newDateTime(′1992−7−123:59:59UTC′);a = new DateTime('1992-7-1 23:59:59 UTC');a=newDateTime(19927123:59:59UTC);b = new DateTime('1992-7-2 00:00:00 UTC');print_r($a->diff($b));Дает ответ 1 секунда, хотя правильный ответ - 2 секунды, ибо между ними еще "1992-7-1 23:59:60 UTC"На самом деле расклад такой UTCUnixtimeGMT примерно 1992-7-1 23:59:587100351981992-7-1 23:59:57.55 1992-7-1 23:59:597100351991992-7-1 23:59:58.55 1992-7-1 23:59:607100352001992-7-1 23:59:59.55 1992-7-2 00:00:007100352001992-7-2 00:00:00.55 1992-7-2 00:00:017100352011992-7-2 00:00:01.55 У кого-нибудь установлен 5.4 или старше? Проверьте у себя pls.
5 comments|post comment
Неожиданно 502.2 [09 Nov 2014|01:18am]
<?retrieveData;rename("","");Этот скрипт при выполнении на PHP 5.6.2 (x64 NTS через CGI) на IIS 7 приводит у меня к 502.2, т.е. на нем фактически падает php-cgi.exe.Если в retrieveData или rename изменить хотя бы один символ - работает как надо, т.е. выдает 500 Server ErrorТот же самый скрипт на том же самом PHP но в Apache 2.4 (mod-cgi) работает без проблем (500).Проверьте на своих конфигурациях, результат пишите сюда - интересно выяснить в чем дело.
21 comments|post comment
Правильное наименование компонентов MVC в РНР фреймворках [23 Oct 2014|06:47pm]
Вопрос на тостерре подтолкнул мою мысль, некоторое время уже работавшую в этом направлении.И получилось у меня, что называем мы компоненты этого классического паттерна неправильно.А правильно будет (по крайней мере, в случае с Ларавелью): Модели лежат в папке Controllers, при этом используя ORM из папки Models для манипуляции с данными Визуальное отображение лежит в папке Views Секретарша лежит в routes.php. И тогда всё сходится! Меня как раз смутили рауты в Ларавели, которые ничтоже сумняшеся используются в виде таких мини-рулетиковконтроллеров, которые берут на себя кучу задач - вплоть до авторизации!. И меня давно уже смущало, что во всех фреймворках моделью называется тупо маппер таблицы из БД.А вот если в голове названия переиначить, то всё сходится:Раут - это тот самый тонкий контроллер, о котором все время говорили большевики, но который никто не видел.Контроллер - это та самая толстая модель, которая отвечает за бизнес-логику! Модель - ОРМ, которым и является.Вью остаётся на месте.Логично?
9 comments|post comment
[07 Oct 2014|06:13am]
Перевод статьи A possible future to PHP Франка КарличекаВозможное будущее PHPСогласно последней статистике, ownClowd – один из крупнейших опенсорсных проектов, написанных на PHP. Как многие из вас знают, PHP использован для серверной части ownCloud. Мы использовали другие технологии, такие как C++ и Qt для десктопных клиентов, Java для андроид-приложений и Objective-C для iOS-приложений, JS для веб-интерфейсов и т.д. Но сердце ownCloud – серверная компонента, использующая PHP 5.3 и выше.Было несколько причин для выбора PHP:( Read more...Collapse )
47 comments|post comment
strtotime [08 Sep 2014|05:07am]
Сколько-сколько это у нас секунд в году, как вы думаете?for($y=1970; y<2038;y<2038; y<2038;y++){ y1=y1 = y1=y+1; t=strtotime("t = strtotime("t=strtotime("y1-01-01 00:00:00") - strtotime("$y-01-01 00:00:00"); echo "$y - y1=y1 = y1=t s =", $t/3600/24, " d\r\n";};( я чего-то не знаю?Collapse )
22 comments|post comment
Переопределить или добавить любой метод класса в PHP без runkit и т.п. расширений [20 Aug 2014|11:58am]
- Как без изменения исходного кода переопределить метод в PHP стандартными средствами? Реально?Короче что-то типа микшенов. Динамически изменяем класс (не созданный объект).- можно ли навесить на new SomeClass() какойто обработчик чтобы дополнительно менять состояние объекта ( инициализировать свойства)- В трейтах мы задаем статически: use Pprint; А есть ли другой способ чтобы типа: add_trait('SomeClass', 'TraitName') ?UPD:пока видел способы: - отлов до загрузки кода класса и модификация потом eval- отлов до загрузки кода класса и модификация в какойто временный файл и include (как я понял Go AOP использует этот принцип только файлы в стримах а не реальные?)
15 comments|post comment
navigation
[ viewing | most recent entries ] [ go earlier ]