Результаты поиска
Как создать бесконечную сессию в Codeigniter
Объясните пожалуйста, как сделать так, чтобы сессия никогда не разрушалась.
URI you submitted has disallowed characters. Как исправить ошибку??
Когда захожу в следующую сслыку site.com/@sdf+ выводит ошибку. Как мне её исправить.
Как мне узнать с какого устройства зашел посетитель на сайт. Напишите код на PHP.
У меня есть блок кода, который не должен показываться, когда посетитель заходит на сайт с телефона. Как мне это сделать.
412   1   16:15, 24th July, 2020
Лучший способ разрешить плагины для приложения PHP
Я запускаю новое веб-приложение в PHP, и на этот раз я хочу создать что-то, что люди могут расширить с помощью интерфейса плагина.
Как можно написать 'hooks' в свой код, чтобы Плагины могли прикрепляться к определенным событиям?
Базы данных плоских файлов
Каковы наилучшие методы создания структур базы данных плоских файлов в PHP?
Многие из более зрелых PHP плоских файловых фреймворков, которые я вижу, пытаются реализовать SQL-подобный синтаксис запроса, который в большинстве случаев является избыточным для моих целей (я бы просто использовал базу данных в этой точке).
Есть ли какие-то элегантные трюки, чтобы получить хорошую производительность и функции с небольшими накладными расходами кода?
Как получить доступ к свойствам объекта из метода объекта?
Каков "purist" или "correct" способ доступа к свойствам объекта из метода объекта, который не является методом getter/setter?
Я знаю, что снаружи объекта вы должны использовать getter/setter,, но изнутри вы бы просто сделали это:
Java:
String property = this.property;
PHP:
$property = $this->property;
или ты бы так и сделал:
Java:
String property = this.getProperty();
PHP:
$property = $this->getProperty();
Простите меня, если мой Java немного не в порядке, прошел год с тех пор, как я программировал в Java...
EDIT:
Похоже, люди предполагают, что я говорю только о частных или защищенных переменных / свойствах. Когда я узнал ОО, меня научили использовать геттеры/сеттеры для каждого отдельного свойства, даже если оно было общедоступным (и на самом деле мне сказали никогда не делать никакой переменной/свойство общедоступным). Итак, я, возможно, начинаю с ложного предположения с самого начала. Похоже, что люди, отвечающие на этот вопрос, возможно, говорят, что вы должны иметь общественные свойства и что они не нуждаются в геттерах и сеттерах, что противоречит тому, чему меня учили, и тому, о чем я говорил, хотя, возможно, это тоже нужно обсудить. Хотя это, вероятно, хорошая тема для другого вопроса...
Как отслеживать загрузку файлов
У меня есть сайт, который играет MP3 в плеере flash. Если пользователь нажмет кнопку 'play', то flash плеер автоматически загрузит mp3 и начнет его воспроизведение.
Есть ли простой способ отслеживать, сколько раз был загружен конкретный клип песни (или любой двоичный файл)?
Является ли ссылка на игру ссылкой на фактическое mp3 файл или к некоторому javascript коду вот и выскакивает игрок?
Если последнее, вы можете легко добавить свой собственный код регистрации там, чтобы отслеживать количество попаданий в него.
Если первое, то вам что-то понадобится это может отслеживать журнал веб-сервера сама и делаю это различие. Мой хостинг план поставляется с webalizer, что делает это очень мило.
Это код javascript, так что это ответ на этот вопрос.
Однако было бы неплохо знать, как отслеживать загрузки с помощью другого метода (без переключения хостов).
Как лучше всего создать тег cloud из массива, используя h1-h6 для определения размера?
У меня есть следующие массивы:
$artist = array("the roots", "michael jackson", "billy idol", "more", "and more", "and_YET_MORE");
$count = array(5, 3, 9, 1, 1, 3);
Я хочу сгенерировать тег cloud, который будет содержать исполнителей с более высоким числом в $count , вложенных в h6 тегов, и с самым низким вложенным h1 тегов.
PHP Безопасность Сеанса
Каковы некоторые рекомендации по поддержанию ответственной безопасности сеанса с PHP? Есть информация по всему интернету, и это о времени, когда все это приземлилось в одном месте!
Лучший способ получить доступ к Exchange с помощью PHP?
Я пишу приложение CMS в PHP, и одно из требований заключается в том, что оно должно иметь возможность взаимодействовать с сервером Exchange клиента. Я уже несколько раз писал эту функциональность и всегда использовал для этого WebDAV , но теперь я склоняюсь к этому.
Я буду запускать сайт на IIS или Apache (без предпочтений) на Windows server 2008. Несколько вещей, которые мне нужно было бы сделать, включают добавление контактов в адресную книгу данного пользователя, отправку электронной почты от имени данного пользователя и запуск отчетов о контактах для пользователя.
Все это довольно легко сделать с WebDAV, но если есть лучший способ, который не требует какой-либо функциональности, которая, вероятно, будет устаревшей в ближайшее время.
Есть какие-нибудь идеи?
Обновление:
Джастин, мне нравится идея использования объектов com, я просто беспокоюсь о поддержании 3-го продукта,чтобы все работало...
Джон, я могу написать веб-сервис в C# для взаимодействия с этими функциями и получить доступ к нему с помощью моего приложения PHP,но это также немного не так.
До сих пор я не уверен, что любой из них лучше, чем WebDAV...
Может ли кто-нибудь показать мне, где я веду себя глупо?
Шифрование Паролей
Каков самый быстрый, но безопасный способ шифрования паролей в (предпочтительно PHP), и для какого метода вы выбираете, является ли он портативным?
Другими словами, если я позже перенесу свой сайт на другой сервер, будут ли мои пароли продолжать работать?
Метод, который я использую сейчас, как мне было сказано, зависит от точных версий библиотек, установленных на сервере.
Соедините PHP с IBM и (AS/400)
У меня есть предстоящий проект, в котором мне нужно будет подключить наш веб-сайт ( PHP5/Apache 1.3/OpenBSD 4.1 ) к нашей серверной системе, работающей на iSeries с OS400 V5R3, чтобы я мог получить доступ к некоторым таблицам, хранящимся там. Я кое-что проверил вокруг, но наткнулся на несколько блокпостов.
Из того, что я видел, расширения DB2 и программное обеспечение DB2 от IBM работают только под Linux. Я попытался скомпилировать расширения со всем программным обеспечением от IBM и даже попробовал их предварительно скомпилированное расширение ibm_db2, но безуспешно. IBM поддерживает только Linux, поэтому я включил эмуляцию Linux в kernel, но это, похоже, ничему не помогло.
Если кто-то столкнулся с тем, что все работает изначально под OpenBSD, это было бы здорово, но я думаю, что мне нужно будет сделать, это настроить второй сервер под управлением CentOS с установленным DB2 (скорее всего, через ZendCore для IBM, так как он, похоже, делает все это для меня) и драйвер, чтобы я мог настроить небольшой сервер транзакций, который я могу разместить и получить представление JSON данных DB2, которые мне нужны.
Может быть, второй вариант кажется излишним или у кого-то еще есть идеи получше?
Передаются ли переменные PHP по значению или по ссылке?
Передаются ли переменные PHP по значению или по ссылке?
Как вы отлаживаете PHP скриптов?
Как вы отлаживаете PHP скрипты?
Я знаю об основной отладке, такой как использование отчетов об ошибках. Отладка точки останова в PHPEclipse также весьма полезна.
Каков наилучший (с точки зрения быстрого и легкого) способ отладки в phpStorm или любом другом IDE?
Сделать XAMPP/Apache служить файл вне htdocs в
Можно ли настроить xampp для обслуживания файла вне каталога htdocs ?
Например, предположим, что у меня есть файл, расположенный следующим образом:
C:\projects\transitCalculator\trunk\TransitCalculator.php
и мой xampp файлов, как правило, подается из:
C:\xampp\htdocs\
(потому что это конфигурация по умолчанию) есть ли какой-то способ заставить Apache распознавать и обслуживать мой файл TransitCalculator.php , не перемещая его под htdocs ? Предпочтительно я хотел бы, чтобы Apache обслуживал/имел доступ ко всему содержимому каталога проектов, и я не хочу перемещать каталог проектов под htdocs .
Редактировать: Редактировать, чтобы добавить Apache на заголовок вопроса, чтобы сделать в более "searchable"
Как я могу получить аутентифицированное имя пользователя под Apache, используя обычную HTTP аутентификацию и PHP?
Во-первых, давайте избавимся от соображений безопасности. Я использую простую аутентификацию под Apache для одноразового, только внутреннего использования, не подключенного к интернету lan, php веб-приложения.
Как я могу получить HTTP аутентифицированное имя пользователя в PHP?
Использование свойства объекта по умолчанию для свойства метода
Я пытаюсь сделать это (что приводит к неожиданной ошибке T_VARIABLE):
public function createShipment($startZip, $endZip, $weight = $this->getDefaultWeight()){}
Я не хочу помещать магическое число туда для веса, так как объект, который я использую, имеет параметр "defaultWeight" , который получают все новые поставки, если вы не укажете вес. Я не могу поместить defaultWeight в саму отгрузку, потому что она изменяется от группы отгрузки к группе отгрузки. Есть ли лучший способ сделать это, чем следующий?
public function createShipment($startZip, $endZip, weight = 0){
if($weight <= 0){
$weight = $this->getDefaultWeight();
}
}
Механизмы отслеживания изменений схемы DB
Каковы наилучшие методы отслеживания и / или автоматизации изменений схемы DB? Наша команда использует Subversion для управления версиями, и мы смогли автоматизировать некоторые из наших задач таким образом (перемещение сборок на промежуточный сервер, развертывание тестируемого кода на рабочий сервер), но мы все еще делаем обновления базы данных вручную. Я хотел бы найти или создать решение, которое позволит нам эффективно работать на разных серверах с различными средами, продолжая использовать Subversion в качестве бэкенда, через который код и обновления DB передаются на различные серверы.
Многие популярные программные пакеты включают в себя сценарии автоматического обновления, которые обнаруживают версию DB и применяют необходимые изменения. Является ли это лучшим способом сделать это даже в более крупном масштабе (через несколько проектов, а иногда и через несколько сред и языков)? Если да, то есть ли какой-либо существующий код, который упрощает этот процесс, или лучше всего просто запустить наше собственное решение? Кто-нибудь реализовывал что-то подобное раньше и интегрировал его в Subversion post-commit hooks, или это плохая идея?
Хотя решение, поддерживающее несколько платформ, было бы предпочтительнее, мы определенно должны поддерживать стек Linux/Apache/MySQL/PHP, поскольку большая часть нашей работы находится на этой платформе.
Как я могу получить совпадения при использовании preg_replace в PHP?
Я пытаюсь схватить заглавные буквы нескольких слов и обернуть их в теги span. Я использую preg_replace для извлечения и упаковки, но он ничего не выводит.
preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
Почему мое тернарное выражение не работает?
Я пытаюсь установить флаг, чтобы показать или скрыть элемент страницы, но он всегда отображается, даже если выражение ложно.
$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>
Что случилось?
Легкий IDE для Linux
Несмотря на то, что у меня есть надежный и быстрый компьютер (Pentium Dual Core 2.0 с 2 ГБ RAM), я всегда ищу легкое программное обеспечение, чтобы иметь на нем, поэтому он работает быстро, даже когда многие приложения работают одновременно.
В последние несколько недель я постепенно перешел на Linux и хочу установить бесплатный легкий, но полезный IDE для программирования на C++ и PHP. Подсветка Sintax и советы по завершению кода являются обязательными.
Итак, я хотел бы получить от вас несколько предложений, ребята.
Как включить PHP файлов, которые требуют абсолютного пути?
У меня есть структура каталогов, как показано ниже;
script.php
inc/include1.php
inc/include2.phpobjects/object1.php
objects/object2.phpsoap/soap.php
Теперь я использую эти объекты как в script.php , так и в /soap/soap.php , я мог бы переместить их, но мне нужна такая структура каталогов по определенной причине. При выполнении script.php путь включения - это inc/include.php , а при выполнении /soap/soap.php -это ../inc, абсолютные пути работают, /mnt/webdev/[project name]/inc/include1.php... , но это уродливое решение, если я когда-нибудь захочу переместить каталог в другое место.
Итак, есть ли способ использовать относительные пути или способ программно генерировать "/mnt/webdev/[project name]/" ?
Как легко использовать веб-сервис из PHP
Существует ли какой-либо инструмент для PHP, который можно использовать для генерации кода для использования веб-службы на основе ее WSDL ? Что-то сравнимое с щелчком "Add Web Reference" в Visual Studio или плагином Eclipse, который делает то же самое для Java.
Как продать Python в client/boss/person
Когда вас просят создать систему XYZ и вы просите сделать это в Python над PHP или Ruby, какие основные функции вы можете упомянуть, когда они требуют от вас объяснения?
Управление версиями PHP веб-проект
У нас есть проект PHP, который мы хотели бы контролировать версии. Прямо сейчас мы втроем работаем над версией разработки проекта, которая находится во внешней папке, к которой привязаны все наши Eclipse IDEs, и поэтому нет контроля версий.
Каков правильный способ и лучший способ для управления версиями этого?
У нас есть настройка SVN, но нам просто нужно найти хороший способ регистрации и выхода, который позволяет нам тестировать на сервере разработки. Есть какие-нибудь идеи?
Блокировка базы данных сервера SQL с помощью PHP
Мне нужна дополнительная безопасность для определенной точки в моем веб-приложении. Поэтому я хочу заблокировать базу данных (SQL Server 2005). Любые предложения или это даже необходимо с SQL сервером?
Редактировать на вопрос:
Запрос не выполняется в автоматическом режиме без регистрации сообщений об ошибках и не происходит внутри транзакции.
окончательное решение:
Я никогда не мог решить эту проблему, однако то, что я сделал, было переключением на MySQL и использованием запроса транзакционного уровня здесь. Это не было главной или даже основной причиной для переключения. У меня были проблемы с сервером SQL, и это позволило мне иметь наш CMS и различные другие инструменты, работающие на одной базе данных. Ранее у нас был сервер SQL и база данных MySQL, работающая для запуска нашего сайта. Порт был немного трудоемким, однако в долгосрочной перспективе я чувствую, что он будет работать намного лучше для сайта и бизнеса.
Блокировка базы данных сервера SQL с помощью PHP
Мне нужна дополнительная безопасность для определенной точки в моем веб-приложении. Поэтому я хочу заблокировать базу данных (SQL Server 2005). Любые предложения или это даже необходимо с SQL сервером?
Редактировать на вопрос:
Запрос не выполняется в автоматическом режиме без регистрации сообщений об ошибках и не происходит внутри транзакции.
окончательное решение:
Я никогда не мог решить эту проблему, однако то, что я сделал, было переключением на MySQL и использованием запроса транзакционного уровня здесь. Это не было главной или даже основной причиной для переключения. У меня были проблемы с сервером SQL, и это позволило мне иметь наш CMS и различные другие инструменты, работающие на одной базе данных. Ранее у нас был сервер SQL и база данных MySQL, работающая для запуска нашего сайта. Порт был немного трудоемким, однако в долгосрочной перспективе я чувствую, что он будет работать намного лучше для сайта и бизнеса.
Доступ к атрибуту CONST ряда классов
Вот как я хотел сделать это, что будет работать в PHP 5.3.0+
<?php
class MyClass
{
const CONSTANT = 'Const var';
}
$classname = 'MyClass';
echo $classname::CONSTANT; // As of PHP 5.3.0
?>
Но я ограничен использованием PHP 5.2.6. Может ли кто-нибудь придумать простой способ имитировать это поведение без создания экземпляра класса?
Выполните PHPUnit тестов в определенном порядке
Есть ли способ заставить тесты внутри TestCase выполняться в определенном порядке? Например, я хочу отделить жизненный цикл объекта от создания для использования до уничтожения, но мне нужно убедиться, что объект настроен первым, прежде чем я выполню другие тесты.
Как я могу найти неиспользуемые функции в проекте PHP
Как я могу найти неиспользуемые функции в проекте PHP?
Существуют ли функции или APIs, встроенные в PHP, которые позволят мне анализировать мою кодовую базу - например, отражение, token_get_all() ?
Достаточно ли богаты эти APIs функции, чтобы мне не приходилось полагаться на сторонний инструмент для выполнения этого типа анализа?
Как заставить PHP и MySQL работать на IIS 7.0?
Хорошо, я искал по всему интернету хорошее решение, чтобы заставить PHP и MySQL работать над IIS7.0. Это почти невозможно, я столько раз пробовал это сделать, но все было напрасно. Пожалуйста, помогите, связав некоторые большие учебники step-by-step с добавлением PHP и MySQL на IIS7.0 с нуля. PHP и MySQL необходимы для установки любого CMS.
PHP / cURL on Windows install: "указанный модуль не удалось найти."
Я запускаю PHP 5.2.3 на сервере Windows 2000 с IIS 5. Я стараюсь чтобы заставить cURL работать, поэтому в моем файле php.ini у меня есть эта строка:
extension_dir = " F:\PHP\ext"
А позже, у меня есть:
расширение=php_curl.dll
Файл F:\PHP\ext\php_curl.dll существует, но когда я пытаюсь запустить любой PHP скрипт, я получаю это в журнале ошибок:
PHP предупреждение: PHP запуск: не удается загрузить динамическую библиотеку ' F:\PHP\ext \php_curl.dll'-указанный модуль не удалось найти. в неизвестных на линии 0
PHP производительность
Что я могу сделать, чтобы увеличить производительность / скорость моих скриптов PHP без установки программного обеспечения на моих серверах?
PHP + MYSQLI: привязка переменных параметров / результатов к подготовленным операторам
В проекте, который я собираюсь завершить, я написал и реализовал решение объектно-реляционного сопоставления для PHP. Прежде чем сомневающиеся и мечтатели воскликнут: "как же так?", расслабьтесь - Я не нашел способа сделать работу поздней статической привязки - я просто работаю над этим наилучшим образом,который я могу сделать.
В любом случае, в настоящее время я не использую подготовленные операторы для запросов, потому что я не мог придумать способ передать переменное количество аргументов в методы bind_params() или bind_result() .
Почему мне нужно поддерживать переменное количество аргументов, спросите вы? Потому что суперкласс моих моделей (подумайте о моем решении как о взломанном PHP ActiveRecord wannabe) - это то, где определяется запрос, и поэтому метод find(), например, не знает, сколько параметров ему нужно будет связать.
Теперь я уже думал о создании списка аргументов и передаче строки в eval(), но мне не очень нравится это решение-я бы предпочел просто реализовать свои собственные проверки безопасности и передать операторы.
Есть ли у кого-нибудь предложения (или истории успеха) о том, как это сделать? Если вы можете помочь мне решить эту первую проблему, возможно, мы сможем решить привязку результирующего набора (что-то, что я подозреваю, будет сложнее или, по крайней мере, более ресурсоемким, если он включает в себя первоначальный запрос для определения структуры таблицы).
Эффективное JPEG изменение размера изображения в PHP
Какой самый эффективный способ изменить размер больших изображений в PHP?
В настоящее время я использую функцию GD imagecopyresampled для получения изображений с высоким разрешением и чистого изменения их размера до размера для просмотра в интернете (примерно 700 пикселей в ширину и 700 пикселей в высоту).
Это отлично работает на небольших (менее 2 MB) фотографиях, и вся операция изменения размера занимает меньше секунды на сервере. Однако в конечном итоге сайт будет обслуживать фотографов, которые могут загружать изображения размером до 10 MB (или изображения размером до 5000x4000 пикселей).
Выполнение такого рода операций изменения размера с большими изображениями приводит к увеличению использования памяти с очень большим запасом (большие изображения могут резко увеличить использование памяти для сценария после 80 MB). Есть ли способ сделать эту операцию изменения размера более эффективной? Должен ли я использовать альтернативную библиотеку изображений, такую как ImageMagick ?
Прямо сейчас код изменения размера выглядит примерно так
function makeThumbnail($sourcefile, $endfile, $thumbwidth, $thumbheight, $quality) {
// Takes the sourcefile (path/to/image.jpg) and makes a thumbnail from it
// and places it at endfile (path/to/thumb.jpg).
// Load image and get image size.
$img = imagecreatefromjpeg($sourcefile);
$width = imagesx( $img );
$height = imagesy( $img );
if ($width > $height) {
$newwidth = $thumbwidth;
$divisor = $width / $thumbwidth;
$newheight = floor( $height / $divisor);
} else {
$newheight = $thumbheight;
$divisor = $height / $thumbheight;
$newwidth = floor( $width / $divisor );
}
// Create a new temporary image.
$tmpimg = imagecreatetruecolor( $newwidth, $newheight );
// Copy and resize old image into new image.
imagecopyresampled( $tmpimg, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height );
// Save thumbnail into a file.
imagejpeg( $tmpimg, $endfile, $quality);
// release the memory
imagedestroy($tmpimg);
imagedestroy($img);
Массивы массивов в Java
Это очень неприятно для меня... Я парень PHP, работающий в Java над проектом JSP. Я знаю, как сделать то, что я пытаюсь через слишком много кода и полное отсутствие изящества.
Я бы предпочел сделать все правильно. Вот такая ситуация:
Я пишу небольшой дисплей, чтобы показать клиентам, в какие дни они могут поливать свои газоны на основе их группы полива (ABCDE) и в какое время года это происходит. Наши сезоны выглядят так: Лето (от 5-1 до 8-31) Spring (от 3-1 до 4-30) Падение (от 9-1 до 10-31) Зима (от 11-1 до 2-28)
Примером может быть:
Если бы я был в группе А, здесь были бы мои разрешенные времена: Зима: только по понедельникам Spring: Вт, Чт, Сб Лето: В Любой День Осень: Вт, Чт, Сб
Если бы я писал это в PHP, я бы использовал такие массивы:
//M=Monday,t=Tuesday,T=Thursday.... etc
$schedule["A"]["Winter"]='M';
$schedule["A"]["Spring"]='tTS';
$schedule["A"]["Summer"]='Any';
$schedule["A"]["Fall"]='tTS';
$schedule["B"]["Winter"]='t';
Я мог бы сделать массивы дней (array ("Tuesday","Thursday","Saturday")) и т. д., Но это не обязательно для того, что я действительно пытаюсь выполнить.
Мне также нужно будет настроить массивы, чтобы определить, в каком сезоне я нахожусь:
$seasons["Summer"]["start"]=0501;
$seasons["Summer"]["end"]=0801;
Может ли кто-нибудь предложить действительно классный способ сделать это? У меня будет сегодняшняя дата и письмо группы. Мне нужно будет выйти из моей функции в день (M) или в ряд дней (tTS), (любой).
анализ сырой email в php
Я ищу good/working/simple, чтобы использовать код php для разбора raw email на части.
Я написал пару решений грубой силы, но каждый раз, когда появляется один маленький change/header/space/something, весь мой парсер выходит из строя, и проект разваливается.
И прежде чем мне укажут на PEAR/PECL,, мне нужен реальный код. У моего хоста есть какая-то странная конфигурация или что-то еще, я никогда не смогу правильно построить .so. Если я действительно получаю .so сделанный, некоторая разница в path/environment/php.ini не всегда делает его доступным (apache против cron против cli).
О, И последнее, я разбираю необработанный текст email, а не POP3 и не IMAP. Он передается в сценарий php через перенаправление .qmail email.
Я не ожидаю, что SOF напишет это для меня, я ищу некоторые советы/отправные точки для этого "right". Это одна из тех проблем "wheel", которые, как я знаю, уже решены.
Составлено PHP?
Есть ли у кого-нибудь опыт работы с ускорителями PHP, такими как MMCache или Zend Accelerator ? Я хотел бы знать, делает ли использование любого из них PHP сравнимым с более быстрыми веб-технологиями. Кроме того, есть ли компромиссы для их использования?
Как настроить переменные для всего сайта в php?
Я хочу определить что-то вроде этого в php :
$EL = "\n<br />\n";
а затем используйте эту переменную в качестве маркера "endline" по всему моему сайту, вот так:
echo "Blah blah blah{$EL}";
Как я могу определить $EL один раз (только в 1 файле), включить его на каждой странице моего сайта и не ссылаться на него, используя (странно наоборот) оператор global $EL; в каждой функции страницы?
PHP: доступ к значению массива на лету
В php мне часто приходится сопоставлять переменную с помощью массива ... но я не могу, кажется, быть в состоянии сделать это в одном лайнере. c.f. образец:
// the following results in an error:
echo array('a','b','c')[$key];
// this works, using an unnecessary variable:
$variable = array('a','b','c');
echo $variable[$key];
Это небольшая проблема, но она продолжает беспокоить время от времени ... Мне не нравится тот факт, что я использую переменную просто так ;)
PHP: доступ к значению массива на лету
В php мне часто приходится сопоставлять переменную с помощью массива ... но я не могу, кажется, быть в состоянии сделать это в одном лайнере. c.f. образец:
// the following results in an error:
echo array('a','b','c')[$key];
// this works, using an unnecessary variable:
$variable = array('a','b','c');
echo $variable[$key];
Это небольшая проблема, но она продолжает беспокоить время от времени ... Мне не нравится тот факт, что я использую переменную просто так ;)
Как я могу определить скорость CodeIgniter?
Я думаю использовать фреймворк PHP под названием CodeIgniter .
Одна из вещей, которая меня интересует, - это его скорость. Однако у меня нет возможности узнать, насколько быстро это происходит, и я бы предпочел просто не верить на слово их веб-сайту. Кто-нибудь знает, как я сам могу определить его скорость, или кто-то может сказать мне о сайте, который может это сделать?
mysqli или PDO - каковы плюсы и минусы?
В нашем случае мы разделены между использованием mysqli и PDO для таких вещей, как подготовленные заявления и поддержка транзакций. Некоторые проекты используют одно, некоторые другое. Существует очень мало реальной вероятности того, что мы когда-нибудь переедем в другой RDBMS.
Я предпочитаю PDO только по той причине, что он допускает именованные параметры для подготовленных операторов, а насколько мне известно, mysqli этого не делает.
Есть ли еще какие-то плюсы и минусы в выборе одного из них в качестве стандарта, когда мы объединяем наши проекты, чтобы использовать только один подход?
Разница в скорости использования встроенных строк против конкатенации в php5?
(предположим, php5) рассмотрим
<?php
$foo = 'some words';
//case 1
print "these are $foo";
//case 2
print "these are {$foo}";
//case 3
print 'these are ' . $foo;
?>
Есть ли большая разница между 1 и 2?
Если нет, то как насчет между 1/2 и 3?
Есть ли простой способ преобразовать C# классов в PHP?
Я привык писать C# Windows приложений. Однако у меня есть некоторое свободное размещенное PHP веб-пространство, которое я хотел бы использовать. У меня есть базовое понимание PHP, но я никогда не использовал его объектно-ориентированные возможности.
Существует ли простой способ преобразовать C# классов в PHP классов или просто невозможно написать полностью объектно-ориентированное приложение в PHP?
Обновление: нет никакой опоры на фреймворк .NET, кроме основ. Основная цель будет заключаться в реструктуризации свойств класса, переменной enums и т.д. PHP будет размещен на сервере Linux.
php Zend / MVC без mod_rewrite
Я видел, что это упоминается во многих блогах по сети, но я считаю, что это должно обсуждаться здесь. Что мы можем сделать, когда у нас есть фреймворк MVC (меня интересует ZEND) в PHP, но наш хост не предоставляет mod_rewrite? Есть ли какие-нибудь "short-cuts"? Можем ли мы каким-либо образом передать управление (чтобы между страницами могло возникнуть сопоставление)? Есть идеи? Спасибо :-)
Найдите наилучшую комбинацию из заданного множества множеств
Скажем, у вас есть груз. Он должен пройти от точки А до точки Б, от точки Б до точки C и, наконец, от точки C до точки D. вам нужно добраться туда за пять дней за наименьшую сумму денег. Есть три возможных грузоотправителя для каждой ноги, каждый со своим собственным различным временем и стоимостью для каждой ноги:
Array
(
[leg0] => Array
(
[UPS] => Array
(
[days] => 1
[cost] => 5000
)
[FedEx] => Array
(
[days] => 2
[cost] => 3000
)
[Conway] => Array
(
[days] => 5
[cost] => 1000
)
)
[leg1] => Array
(
[UPS] => Array
(
[days] => 1
[cost] => 3000
)
[FedEx] => Array
(
[days] => 2
[cost] => 3000
)
[Conway] => Array
(
[days] => 3
[cost] => 1000
)
)
[leg2] => Array
(
[UPS] => Array
(
[days] => 1
[cost] => 4000
)
[FedEx] => Array
(
[days] => 1
[cost] => 3000
)
[Conway] => Array
(
[days] => 2
[cost] => 5000
)
)
)
Как вы собираетесь найти лучшую комбинацию программно?
Моя лучшая попытка до сих пор (третий или четвертый алгоритм) :
- Найдите самый длинный грузоотправитель для каждой ноги
- Устранить большинство "expensive" один
- Найти самый дешевый грузоотправитель для каждой ноги
- Рассчитайте общую стоимость & дней
- Если дни приемлемы, закончите, иначе, Гото 1
Быстро высмеивается в PHP (обратите внимание, что тестовый массив ниже работает плавно, но если вы попробуете его с тестовым массивом сверху, он не найдет правильную комбинацию):
$shippers["leg1"] = array(
"UPS" => array("days" => 1, "cost" => 4000),
"Conway" => array("days" => 3, "cost" => 3200),
"FedEx" => array("days" => 8, "cost" => 1000)
);
$shippers["leg2"] = array(
"UPS" => array("days" => 1, "cost" => 3500),
"Conway" => array("days" => 2, "cost" => 2800),
"FedEx" => array("days" => 4, "cost" => 900)
);
$shippers["leg3"] = array(
"UPS" => array("days" => 1, "cost" => 3500),
"Conway" => array("days" => 2, "cost" => 2800),
"FedEx" => array("days" => 4, "cost" => 900)
);
$times = 0;
$totalDays = 9999999;
print "<h1>Shippers to Choose From:</h1><pre>";
print_r($shippers);
print "</pre><br />";
while($totalDays > $maxDays && $times < 500){
$totalDays = 0;
$times++;
$worstShipper = null;
$longestShippers = null;
$cheapestShippers = null;
foreach($shippers as $legName => $leg){
//find longest shipment for each leg (in terms of days)
unset($longestShippers[$legName]);
$longestDays = null;
if(count($leg) > 1){
foreach($leg as $shipperName => $shipper){
if(empty($longestDays) || $shipper["days"] > $longestDays){
$longestShippers[$legName]["days"] = $shipper["days"];
$longestShippers[$legName]["cost"] = $shipper["cost"];
$longestShippers[$legName]["name"] = $shipperName;
$longestDays = $shipper["days"];
}
}
}
}
foreach($longestShippers as $leg => $shipper){
$shipper["totalCost"] = $shipper["days"] * $shipper["cost"];
//print $shipper["totalCost"] . " <?> " . $worstShipper["totalCost"] . ";";
if(empty($worstShipper) || $shipper["totalCost"] > $worstShipper["totalCost"]){
$worstShipper = $shipper;
$worstShipperLeg = $leg;
}
}
//print "worst shipper is: shippers[$worstShipperLeg][{$worstShipper['name']}]" . $shippers[$worstShipperLeg][$worstShipper["name"]]["days"];
unset($shippers[$worstShipperLeg][$worstShipper["name"]]);
print "<h1>Next:</h1><pre>";
print_r($shippers);
print "</pre><br />";
foreach($shippers as $legName => $leg){
//find cheapest shipment for each leg (in terms of cost)
unset($cheapestShippers[$legName]);
$lowestCost = null;
foreach($leg as $shipperName => $shipper){
if(empty($lowestCost) || $shipper["cost"] < $lowestCost){
$cheapestShippers[$legName]["days"] = $shipper["days"];
$cheapestShippers[$legName]["cost"] = $shipper["cost"];
$cheapestShippers[$legName]["name"] = $shipperName;
$lowestCost = $shipper["cost"];
}
}
//recalculate days and see if we are under max days...
$totalDays += $cheapestShippers[$legName]['days'];
}
//print "<h2>totalDays: $totalDays</h2>";
}
print "<h1>Chosen Shippers:</h1><pre>";
print_r($cheapestShippers);
print "</pre>";
Я думаю, что мне, возможно, придется на самом деле сделать что-то вроде того, где я буквально делаю каждую комбинацию по одному (с серией петель) и складываю общее "score" каждого и нахожу лучший....
EDIT: Чтобы уточнить, это не задание "homework" (я не в школе). Это часть моего текущего проекта на работе.
Требования (как всегда) постоянно менялись. Если бы мне дали текущие ограничения в то время, когда я начал работать над этой проблемой, я бы использовал какой-то вариант алгоритма A* (или Dijkstra'S, или shortest path, или simplex, или что-то еще). Но все менялось и менялось, и это привело меня туда, где я сейчас нахожусь.
Поэтому я думаю, что это означает, что мне нужно забыть обо всем дерьме, которое я сделал до этого момента, и просто пойти с тем, что я знаю, что должен идти, что является алгоритмом поиска пути.
Только принимать определенные ajax запросы от пользователей, прошедших проверку подлинности
Как лучше всего убедиться, что определенные вызовы ajax на определенные страницы принимаются только от аутентифицированных пользователей?
Например:
Допустим, у меня есть главная страница под названием blog.php (я знаю, творчество изобилует). Предположим также, что существует страница с именем delete.php , которая ищет параметр post_id , а затем удаляет некоторую запись из базы данных.
В этом очень надуманном примере есть некоторый механизм на blog.php, который отправляет запрос через ajax к delete.php, чтобы удалить запись.
Теперь этот механизм будет доступен только аутентифицированным пользователям на blog.php. Но что мешает кому-то просто позвонить delete.php с кучей случайных чисел и удалить все на сайте?
Я сделал быстрый тест, где я установил переменную сеанса в blog.php, а затем сделал вызов ajax в delete.php, чтобы вернуться, если переменная сеанса была установлена или нет (это не было) .
Каков общепринятый способ справиться с такими вещами?
OK. Должно быть, я сошел с ума, когда впервые попробовал это сделать.
Я просто сделал еще один тест, как тот, который я описал выше, и он работал отлично.
Создание одного интерфейса перезаписывает метод, который он наследует от другого интерфейса в PHP
Есть ли способ в PHP перезаписать метод, объявленный одним интерфейсом в интерфейсе, расширяющем этот интерфейс?
образец:
Я, наверное, делаю что-то не так, но вот что у меня есть:
interface iVendor{
public function __construct($vendors_no = null);
public function getName();
public function getVendors_no();
public function getZip();
public function getCountryCode();
public function setName($name);
public function setVendors_no($vendors_no);
public function setZip($zip);
public function setCountryCode($countryCode);
}
interface iShipper extends iVendor{
public function __construct($vendors_no = null, $shipment = null);
public function getTransitTime($shipment = null);
public function getTransitCost($shipment = null);
public function getCurrentShipment();
public function setCurrentShipment($shipment);
public function getStatus($shipment = null);
}
Обычно в PHP, когда вы расширяете что-то, вы можете перезаписать любой метод, содержащийся в нем (правильно?). Однако, когда один интерфейс расширяет другой, он не позволит вам. Если только я не думаю об этом неправильно... Когда я реализую интерфейс iShipper, мне не нужно заставлять объект Shipper расширять объект Vendor (который реализует интерфейс iVendor). Я просто говорю:
class FedEx implements iShipper{}
и сделать FedEx реализовать все методы из iVendor и iShipper. Однако мне нужно, чтобы функции __construct в iVendor и iShipper были уникальными. Я знаю, что могу вынуть $shipment = null, но тогда было бы не так удобно создавать грузоотправителей (просто передавая vendors_no и отгрузку при создании экземпляра).
Кто-нибудь знает, как сделать эту работу? Мой запасной вариант-установить отправку, позвонив $shipper->setShipment($shipment); на отправителя после того, как я создам его экземпляр, но я надеюсь, что смогу обойти это...
Еще немного объяснений для любопытных:
Объект FedEx имеет методы, которые переходят на сайт FedEx (используя cURL) и получают оценку для рассматриваемой отгрузки. У меня есть объект UPS, объект BAXGlobal, объект Conway и т. д. Каждый из них имеет COMPLETELY различных методов для фактического получения оценки доставки, но все, что система должна знать, это то, что они являются "shipper" и что методы, перечисленные в интерфейсе, могут быть вызваны на них (поэтому он может обрабатывать их все точно так же и перебирать их в массиве "shippers", вызывая getTransitX() , чтобы найти лучшего отправителя для отгрузки).
Каждый "Shipper" также является "Vendor", хотя и рассматривается как таковой в других частях системы (получение и ввод DB и т. д. Наш дизайн данных-это куча дерьма, поэтому FedEx хранится прямо рядом с такими компаниями, как Dunder Mifflin в таблице "Vendors", что означает, что он получает все свойства каждого другого поставщика, но нуждается в дополнительных свойствах и методах, предоставляемых iShipper).
Как написать regex, чтобы вернуть только определенные части этой строки?
Поэтому я работаю над проектом, который позволит пользователям вводить истории покерных рук с таких сайтов, как PokerStars, а затем отображать им руку.
Кажется, что regex будет отличным инструментом для этого, однако я оцениваю свои знания regex на "slim to none".
Поэтому я использую PHP и перебираю этот блок текста строка за строкой и по строкам, как это:
Seat 1: fabulous29 (835 in chips)
Seat 2: Nioreh_21 (6465 in chips)
Seat 3: Big Loads (3465 in chips)
Seat 4: Sauchie (2060 in chips)
Я хочу извлечь seat number, name, & chip count , поэтому формат
Seat [number]: [letters&numbers&characters] ([number] in chips)
Я понятия не имею, с чего начать или какие команды я должен даже использовать для оптимизации этого.
Любые советы очень ценятся - даже если это просто ссылка на учебник по PHP regex или имя команды(команд), которую я должен использовать.
Как вы используете обратные ссылки на PCREs в PHP?
Я читаю эту страницу PHP RegEx, но либо я что-то упускаю, неправильно читаю что-то, или это не работает так, как они говорят. Я предполагаю, что это один из первых двух.
$str = preg_replace("([|]\d*)", "\1;", $str);
PHPs htmlspecialcharacters эквивалент в .NET?
PHP имеет отличную функцию под названием htmlspecialcharacters() , где вы передаете ей строку, и она заменяет все специальные символы HTML их безопасными эквивалентами, это почти один магазин для очистки ввода. Очень мило, правда?
Ну есть ли эквивалент в любой из библиотек .NET?
Если нет, то может ли кто-нибудь ссылаться на любые примеры кода или библиотеки, которые делают это хорошо?
Доступ к параметру html в PHP
Я пытаюсь сделать простой тестовый сценарий php для сеансов. В основном он увеличивает счетчик (хранится в $_SESSION) каждый раз, когда вы обновляете эту страницу. Это работает, но я пытаюсь иметь ссылку, чтобы уничтожить сеанс, который перезагружает страницу с параметром ?destroy=1 . Я пробовал пару операторов if, чтобы увидеть, установлен ли этот параметр, и если да, то уничтожить сеанс, но он, похоже, не работает.
Я даже поместил оператор if в основной корпус, чтобы всплывающее сообщение, если параметр установлен , но он, похоже, не был поднят.
Я знаю, что делаю что-то глупое (я новичок PHP), но я не могу найти, что это такое...
Смотрите код здесь:
<?php
if ($_POST['destroy']) {
session_destroy();
} else {
session_start();
}
?>
<html>
<head>
<title>Session test</title>
</head>
<body>
<?php
if (isset($_POST['destroy'])) {
echo "Destroy set";
}
$_SESSION['counter']++;
echo "You have visited this page " . $_SESSION['counter'] . " times" . "<BR>";
echo "I am tracking you using the session id " . session_id() . "<BR>";
echo "Click <a href=\"" . $_SERVER['PHP_SELF'] . "?destroy=1\">here</a> to destroy the session.";
?>
Реализация права в PHP
Я пытался сделать это несколько раз, но безуспешно. После прочтения этого поста, это заставило меня заинтересоваться этим снова. Так может кто-нибудь сказать мне, почему следующее не работает?
<?php
$guest = 1;
$editor = 2;
$admin = 4;
$user = $editor;
if( $user == ($editor | $admin) ) {
echo "Test";
}
?>
Как бы вы реализовали аутентификацию на основе FORM без резервной базы данных?
У меня есть сценарий PHP, который работает как программа CGI, а заголовок HTTP Authenticate съедается и выплевывается. Поэтому я хотел бы реализовать какую-то аутентификацию на основе FORM. В качестве дополнительного ограничения отсутствует база данных, поэтому данные сеанса не могут быть сохранены.
Я очень открыт для того, чтобы иметь мастер-имя пользователя и пароль. Мне просто нужно защитить приложение от злоумышленника, который не знает эти учетные данные.
Так как бы вы это реализовали?
Печенье?
Я могу представить форму, и если она подтвердится, я могу отправить обратно файл cookie, который является hash из IP адреса и секретного кода. Тогда я могу запретить отображение страниц, если вещь не расшифровывается правильно. Но я понятия не имею, как реализовать это в PHP.
Email обслуживания в php
Каков наиболее правильный способ отправки email минимальной 1000 или более в PHP? Есть ли надежная email техника массового обслуживания, которая способна справиться с этим?
WebSVN с сервером VisualSVN, кто - нибудь получил аутентификацию для работы?
У меня есть сервер VisualSVN , установленный на сервере Windows, обслуживающем несколько репозиториев.
Поскольку web-viewer, встроенный в сервер VisualSVN, является минималистичным браузером subversion, я хотел бы установить WebSVN поверх моих репозиториев.
Проблема, однако, заключается в том, что я не могу заставить аутентификацию работать. В идеале я хотел бы, чтобы моя текущая аутентификация репозитория, указанная в VisualSVN, работала с WebSVN, так что, хотя я вижу все имена репозитория в WebSVN, я не могу просматривать их без правильных учетных данных.
Посетив кэшированную копию самой верхней ссылки в этом запросе google , вы можете увидеть, что я нашел до сих пор, что выглядит многообещающе.
(главная страница блога, похоже, была уничтожена, домен самой верхней страницы, на которую я ссылаюсь,-wizzard.de)
Там я нашел некоторые функции php, которые я мог бы прикрепить к одному из файлов php в WebSVN. Я следил за изменениями там, но все, что мне удалось сделать, это заставить WebSVN спросить у меня имя пользователя и пароль, и независимо от того, что я ввожу, он меня не впустит.
К сожалению, php и apache - это в основном черная магия для меня.
Итак, кто-нибудь успешно интегрировал WebSVN с VisualSVN размещенными репозиториями?
cURL добавление whitespace к контенту публикации?
Я пытаюсь POST против сервера поставщика, используя PHP 5.2 с cURL. Я читаю в документе XML для публикации на их сервере, а затем читаю в ответе:
$request = trim(file_get_contents('test.xml'));
$curlHandle = curl_init($servletURL);
curl_setopt($curlHandle, CURLOPT_POST, TRUE);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, array('XML'=>$request));
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curlHandle, CURLOPT_HEADER, FALSE); # Have also tried leaving this out
$response = curl_exec($curlHandle);
Этот код, сам по себе, работает OK, но другой сервер возвращает ответ от его парсера XML, заявляющего:
Содержание не допускается в prolog
Я посмотрел эту ошибку, и это обычно вызвано whitespace до XML, но я убедился, что сам файл XML не имеет whitespace, и trim() должен очистить это в любом случае. Я сделал TCPDump по соединению, пока я запускал код, и это то, что отправляется:
POST {serverURL} HTTP/1.1
Host: {ip of server}:8080
Accept: */*
Content-Length: 921
Expect: 100-continue
Content-Type: multipart/form-data; boundry:---------------------------01e7cda3896f
---------------------------01e7cda3896f
Content-Disposition: form-data; name="XML"
[SNIP - the XML was displayed]
---------------------------01e7cda3896f--
До и после строки [SNIP] есть видимый whitespace, когда я переигрываю сеанс в Ethereal. Это то, что вызывает проблему, и если да,то как я могу ее удалить, или я смотрю слишком далеко, и это может быть проблемой с сервером, на котором я публикую?
Работа с PHP сервером и MySQL сервером в разных часовых поясах
Для тех из нас, кто использует стандартные пакеты общего хостинга, такие как GoDaddy или сетевые решения, как вы обрабатываете конверсии datetime, когда ваш хостинг-сервер (PHP) и MySQL сервер находятся в разных часовых поясах?
Кроме того, есть ли у кого-нибудь рекомендации по определению часового пояса, в котором находится посетитель вашего сайта, и соответствующим образом манипулирует переменной datetime?
Как отобразить "12 minutes ago" и т.д. На странице PHP?
Может ли кто-нибудь сказать мне, как я могу отобразить сообщение о состоянии, например "12 seconds ago" или "5 minutes ago" и т.д. На веб-странице?
Инденторы и декораторы пакетного кода
Кто-нибудь знает хорошего пакетный файл инденторов код или beautifiers?
Специально для PHP, JS и SGML-языков.
Предпочтительно с вариантами относительно стиля.
PHP скрипт для заполнения таблиц MySQL
Кто-нибудь знает о script/class (предпочтительно в PHP), который будет анализировать данный MySQL table's structure , а затем заполнять его x number of rows случайными тестовыми данными на основе типов полей?
Я никогда не видел и не слышал о чем-то подобном и подумал, что проверю, прежде чем писать самому.
Гото команда в PHP?
Я слышал слухи, что PHP планирует ввести команду "goto". Что он должен делать?
Я попытался немного поискать, но не нашел ничего ужасно описательного. Я понимаю, что это не будет команда типа "GOTO 10"...
Проверьте права доступа к файлам
Как я могу проверить file permissions, не имея необходимости запускать конкретную команду операционной системы через passthru() или exec() ?
Представляем Python
Компания, с которой я работал, имеет двух разработчиков, работающих полный рабочий день, и несколько фрилансеров. Они находятся в процессе найма нового ведущего разработчика, чтобы попытаться навести порядок и управление в разработке.
Но в настоящее время один из разработчиков увидел свет Django (на сегодняшний день компания разработала только PHP), в то время как другой разработчик обеспокоен тем, что введение нового языка (Python) является плохой идеей прямо сейчас.
Как они должны подходить к внедрению этой новой технологии? Очевидно, что только один из разработчиков действительно знает Python, не будет никакой избыточности, когда этот разработчик уйдет или покинет компанию.
Должны ли они беспокоиться о том, чтобы ввести Python, или они должны искать решения только для PHP до тех пор, пока у команды на самом деле не будет более одного Pythonion? Без лидера команды, решения должны падать на них.
Быстрый (er) способ получить индекс файла с помощью PHP
Чтобы захватить индекс файла в PHP, вы можете использовать это:
$fs = stat($file);
echo $fs['ino'];
Проблема в том, что EVERYWHERE говорит, что это медленно, и вы должны избегать этого. Таким образом, возникает вопрос, каков быстрый(э-э) способ сделать это?
Инструменты для рефакторинга кода PHP
Существуют ли какие-либо инструменты, поддерживающие рефакторинг кода PHP (переименование переменных, извлечение методов, поиск ссылок на методы,...)? Спасибо.
PHP с SQL Server 2005+
В настоящее время у нас есть гибридная установка ASP/PHP, подключающаяся к базе данных SQL Server 2005. Но вся работа с запросами выполняется на стороне клиента, я хотел бы переместить часть этого в PHP.
Какой драйвер и / или строка подключения необходимы для подключения к Sql Svr и каков синтаксис для использования в PHP?
Обновление: OK поэтому я определенно пытался избежать использования чего-либо, связанного с копированием DLLs и т. д. Я посмотрю на драйвер SQL2K5PHP (спасибо Винсент). @jcarrascal для ясности, под "client side" я имею в виду наше приложение-это внутреннее веб-приложение , которое работает как HTA, со всеми запросами, выполняемыми через javascript вызовов к ASP, который фактически отправляет запрос DB.
cURL добавление whitespace к контенту публикации?
Я пытаюсь POST против сервера поставщика, используя PHP 5.2 с cURL. Я читаю в документе XML для публикации на их сервере, а затем читаю в ответе:
$request = trim(file_get_contents('test.xml'));
$curlHandle = curl_init($servletURL);
curl_setopt($curlHandle, CURLOPT_POST, TRUE);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, array('XML'=>$request));
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curlHandle, CURLOPT_HEADER, FALSE); # Have also tried leaving this out
$response = curl_exec($curlHandle);
Этот код, сам по себе, работает OK, но другой сервер возвращает ответ от его парсера XML, заявляющего:
Содержание не допускается в prolog
Я посмотрел эту ошибку, и это обычно вызвано whitespace до XML, но я убедился, что сам файл XML не имеет whitespace, и trim() должен очистить это в любом случае. Я сделал TCPDump по соединению, пока я запускал код, и это то, что отправляется:
POST {serverURL} HTTP/1.1
Host: {ip of server}:8080
Accept: */*
Content-Length: 921
Expect: 100-continue
Content-Type: multipart/form-data; boundry:---------------------------01e7cda3896f
---------------------------01e7cda3896f
Content-Disposition: form-data; name="XML"
[SNIP - the XML was displayed]
---------------------------01e7cda3896f--
До и после строки [SNIP] есть видимый whitespace, когда я переигрываю сеанс в Ethereal. Это то, что вызывает проблему, и если да,то как я могу ее удалить, или я смотрю слишком далеко, и это может быть проблемой с сервером, на котором я публикую?
Как я могу регистрировать необнаруженные исключения в PHP?
Я выяснил, как преобразовать ошибки в исключения, и я хорошо отображаю их, если они не пойманы, но я не знаю, как их правильно регистрировать. Просто записать их в файл не будет полезно, не так ли? И вы бы рискнули получить доступ к базе данных, когда вы еще не знаете, что вызвало исключение?
В чем смысл интерфейсов в PHP?
Интерфейсы позволяют создавать код, который определяет методы классов, реализующих его. Однако вы не можете добавить код к этим методам.
Абстрактные классы позволяют делать то же самое, а также добавлять код к методу.
Теперь, если вы можете достичь той же цели с абстрактными классами, зачем нам вообще нужна концепция интерфейсов?
Мне сказали, что это связано с теорией OO от C++ до Java, на которой основан материал PHP OO. Является ли эта концепция полезной в Java, но не в PHP? Может быть, это просто способ избежать того, чтобы заполнители были завалены в абстрактном классе? Я что-то упустил?
Лучший подход к разбору для SQL в PHP файлов?
Для моей старшей диссертации я разработал программу, которая будет автоматически обнаруживать и предлагать исправления уязвимостей SQL инъекций с использованием подготовленных инструкций. В частности, расширение mysqli для PHP. Мой вопрос для сообщества SO заключается в следующем: каков ваш предпочтительный подход к обнаружению SQL в исходном коде PHP?
Я использовал перечисление, содержащее SQL keywords (SELECT, INSERT, ...) , и в основном анализировал каждую строку, повторяя перечисление, чтобы определить, присутствует ли какой-либо SQL. Кроме того, я должен был убедиться, что синтаксический анализатор не ошибочно обнаруживает html (например <\select>).
Для меня это решение работало нормально, но теперь у меня есть немного больше времени на руках и я подумал о рефакторинге кода, чтобы использовать более элегантное (и эффективное) решение. Пожалуйста, ограничьте свои решения использованием C# , поскольку это то, в чем я написал свою программу.
Если у меня есть строка PHP в формате YYYY-DD-MM и timestamp в MySQL, есть ли хороший способ конвертировать между ними?
Мне интересно провести сравнение между строкой даты и MySQL timestamp. Однако я не вижу легкой конверсии. Неужели я упускаю что-то очевидное?
Самый простой способ профилировать скрипт PHP
Какой самый простой способ профилировать скрипт PHP?
Я бы с удовольствием прикрепил что-то, что показывает мне дамп всех вызовов функций и сколько времени они заняли, но я также OK с размещением чего-то вокруг конкретных функций.
Я попробовал поэкспериментировать с функцией microtime :
$then = microtime();
myFunc();
$now = microtime();
echo sprintf("Elapsed: %f", $now-$then);
но это иногда дает мне отрицательные результаты. К тому же это большая проблема, чтобы разбрызгать это по всему моему коду.
sleep() молчаливые свиньи CPU
Я запускаю Apache на Linux в пределах VMWare.
Одна из PHP страниц, которые я запрашиваю, делает sleep() , и я обнаруживаю, что если я попытаюсь запросить вторую страницу, пока первая страница является sleep()'ing, вторая страница зависает, ожидая завершения sleep() с первой страницы.
Кто-нибудь еще видел такое поведение?
Я знаю, что PHP не является многопоточным, но это похоже на грубое неправильное обращение с CPU.
Edit: я должен был упомянуть, что использование CPU не вызывает скачков. Что я имею в виду CPU "hogging" заключается в том, что никаких других PHP страницы, кажется, в состоянии использовать CPU, пока страница sleep() передоза.
Как изменить размер и преобразовать загруженное изображение в PNG с помощью GD?
Я хочу разрешить пользователям загружать изображения типа Аватара в различных форматах (по крайней мере, в форматах GIF, JPEG и PNG ), но сохранить их все как PNG database BLOBs . Если изображения слишком большие, по пикселям, я хочу изменить их размер до DB-вставки.
Что является лучшим способом, чтобы использовать GD, чтобы сделать изменения и преобразования PNG?
Edit: к сожалению, на сервере, который мне нужен, доступен только GD, а не ImageMagick .
Какой хороший способ инкапсулировать доступ к данным с помощью PHP/MySQL?
Большая часть моего опыта находится в стеке MSFT, но сейчас я работаю над сайд-проектом, помогая кому-то с личным сайтом с дешевым хостингом, который построен на стеке LAMP. Мои возможности по установке дополнительных компонентов ограничены, поэтому мне интересно, как написать код доступа к данным без внедрения необработанных запросов в файлы .php.
Я люблю, чтобы все было просто, даже с этим .NET. Обычно я пишу хранимые процедуры для всего, и у меня есть вспомогательный класс, который обертывает все вызовы для выполнения процедур и возврата наборов данных. Я не ищу полномасштабного ORM,но это может быть путь, и другие, кто рассматривает этот вопрос, возможно, ищут его.
Помните, что у меня есть учетная запись $7/month GoDaddy, поэтому я ограничен тем, что уже установлено в их базовом пакете.
Edit: спасибо rix0rr, Алан, Андерс, Дракон, Я проверю все это. Я отредактировал вопрос, чтобы быть более открытым для решений ORM, поскольку они так популярны.
Имеет ли PHP встроенные структуры данных?
Я смотрю на руководство PHP, и я не вижу раздела о структурах данных, которые есть в большинстве языков, таких как списки и наборы. Я просто слепой или у PHP нет ничего подобного встроенного?
PHP включает в себя против OOP
Я хотел бы иметь ссылку на плюсы и минусы использования include files vs objects(classes) при разработке приложений PHP.
Я знаю, что мне было бы полезно иметь одно место, чтобы пойти на это answer...I есть несколько собственных мнений, но я с нетерпением жду, чтобы услышать других.
простой пример:
Некоторые страницы на моем сайте доступны только зарегистрированным пользователям. У меня есть два варианта реализации (есть и другие, но давайте ограничимся этими двумя)
Создайте файл authenticate.php и включите его на каждой странице. Он содержит логику для аутентификации.
Создайте объект пользователя, который имеет функцию аутентификации, ссылайтесь на объект для аутентификации на каждой странице.
Edit я хотел бы увидеть, как можно взвесить преимущества одного над другим. Мои текущие (и слабые причины) следуют:
Включает в себя - иногда функция-это просто easier/shorter/faster называть Объекты-группировка функциональных возможностей и свойств приводит к более длительному обслуживанию.
Включает в себя-меньше кода для записи (нет конструктора, нет синтаксиса класса) назовите меня ленивым, но это правда.
Объекты -сила формальности и единый подход к функциям и созданию.
Включает в себя-легче для новичка, чтобы иметь дело с Объекты-сложнее для новичков, но не одобряются профессионалами.
Я смотрю на эти факторы в начале проекта, чтобы решить, хочу ли я делать включения или объекты. Это несколько плюсов и минусов с моей головы.
Прохождение с комментарием, мульти-линии (свободного пространства) regex для функции preg_match
У меня есть regex, который в конечном итоге будет немного длинным, и это сделает его намного легче читать, чтобы иметь его через несколько строк.
Я пробовал это, но меня просто тошнит.
preg_match(
'^J[0-9]{7}:\s+
(.*?) #Extract the Transaction Start Date msg
\s+J[0-9]{7}:\s+Project\sname:\s+
(.*?) #Extract the Project Name
\s+J[0-9]{7}:\s+Job\sname:\s+
(.*?) #Extract the Job Name
\s+J[0-9]{7}:\s+',
$this->getResultVar('FullMessage'),
$atmp
);
Есть ли способ передать regex в приведенной выше форме preg_match?
Разница между петлями
Речь идет о PHP, но я не сомневаюсь, что многие из тех же комментариев будут применяться и к другим языкам.
Проще говоря, каковы различия в различных типах цикла для PHP? Является ли один быстрее/лучше, чем другие, или я должен просто поместить его в самый читаемый цикл?
for ($i = 0; $i < 10; $i++)
{
# code...
}
foreach ($array as $index => $value)
{
# code...
}
do
{
# code...
}
while ($flag == false);
Предложения по Ajax среде разработки для PHP
Я программист C/C++ профессионально, но я создал несколько личных веб-сайтов, используя PHP and MySQL .
Они довольно просты , и я хотел бы оживить их с помощью Ajax, но я никогда не делал никакого Ajax. Я сделал все разработки до сих пор вручную, т. е. нет IDE или что-то в этом роде.
Есть ли у кого-нибудь предложения по Ajax средам разработки, которые могут мне помочь?
Shareware или freeware были бы предпочтительнее, поскольку мне было бы трудно оправдать расходы на это больше, чем минимальная сумма денег...
Каков наилучший способ настроить memcached на CentOS для работы с Apache и PHP
Каков самый простой способ установить memcached на CentOS для кого-то нового в мире Linux? Каков наилучший способ включить его для Apache и PHP
Как обрабатывать в том числе необходимые классы в PHP
Мне интересно, что лучше всего подходит для решения проблемы с необходимостью "include" так много файлов в моих скриптах PHP, чтобы гарантировать, что все классы, которые мне нужно использовать, доступны для моего скрипта.
В настоящее время я просто использую include_once для включения классов, к которым я обращаюсь напрямую. Каждый из них будет include_once классы, которые они получают доступ.
Я изучил использование функции __autoload , но hat, похоже, не работает хорошо, если вы планируете организовать файлы классов в дереве каталогов. Если бы вы это сделали, похоже, что вы бы в конечном итоге ходили по дереву каталогов, пока не нашли класс, который вы искали. Кроме того, я не уверен, как это влияет на классы с одинаковым именем в разных пространствах имен.
Есть ли более простой способ справиться с этим?
Или PHP просто не подходит для приложений типа "enterprisey" с большим количеством различных объектов, расположенных в отдельных файлах, которые могут находиться во многих разных каталогах.
Классы против массивов 2D
Что лучше использовать в PHP, массиве 2D или классе? Я включил пример того, что я имею в виду под этим.
// Using a class
class someClass
{
public $name;
public $height;
public $weight;
function __construct($name, $height, $weight)
{
$this -> name = $name;
$this -> height = $height;
$this -> weight = $weight;
}
}
$classArray[1] = new someClass('Bob', 10, 20);
$classArray[2] = new someClass('Fred', 15, 10);
$classArray[3] = new someClass('Ned', 25, 30);
// Using a 2D array
$normalArray[1]['name'] = 'Bob';
$normalArray[1]['height'] = 10;
$normalArray[1]['weight'] = 20;
$normalArray[2]['name'] = 'Fred';
$normalArray[2]['height'] = 15;
$normalArray[2]['weight'] = 10;
$normalArray[3]['name'] = 'Ned';
$normalArray[3]['height'] = 25;
$normalArray[3]['weight'] = 30;
Предполагая, что кто-то не выйдет и не покажет, что классы слишком медленные, похоже, что класс выигрывает.
Я не знаю, какой ответ я должен принять, чтобы я только что проголосовал за них всех.
И теперь я написал две почти идентичные страницы, одну с использованием массива 2D (написанного до публикации этого вопроса), а теперь один использует класс, и я должен сказать, что класс производит гораздо более приятный код. Я понятия не имею, сколько накладных расходов будет сгенерировано, но я сомневаюсь, что это будет конкурировать с улучшением самого кода.
Спасибо, что помогли мне стать лучшим программистом.
Внедрение данных изображения IPTC с PHP GD
Я пытаюсь встроить данные IPTC в изображение JPEG с помощью iptcembed() , но у меня возникли некоторые проблемы.
Я проверил, что это в конечном продукте:
// Embed the IPTC data
$content = iptcembed($data, $path);
// Verify IPTC data is in the end image
$iptc = iptcparse($content);
var_dump($iptc);
Который возвращает введенные теги.
Однако когда я сохраняю и перезагружаю изображение теги не существуют:
// Save the edited image
$im = imagecreatefromstring($content);
imagejpeg($im, 'phplogo-edited.jpg');
imagedestroy($im);
// Get data from the saved image
$image = getimagesize('./phplogo-edited.jpg');
// If APP13/IPTC data exists output it
if(isset($image['APP13']))
{
$iptc = iptcparse($image['APP13']);
print_r($iptc);
}
else
{
// Otherwise tell us what the image *does* contain
// SO: This is what's happening
print_r($image);
}
Так почему же теги не отображаются в сохраненном изображении?
Источник PHP доступен здесь, и соответствующие выходы:
Установка PHP включить путь на основе каждого сайта?
Я могу установить путь PHP include в php.ini :
include_path = /path/to/site/includes/
Но тогда другие сайты страдают так, что это не хорошо.
Я могу установить PHP include в начале каждого файла:
$path = '/path/to/site/includes/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
Но это кажется плохой практикой и загромождает все вокруг.
Так что я могу сделать включение этого и затем включить его в каждый файл:
include 'includes/config.php';
или
include '../includes/config.php';
Это то, что я делаю прямо сейчас, но путь включения config.php будет меняться в зависимости от того, что его включает.
Есть ли лучший способ? Разве это имеет значение?
Тактика использования PHP на высоконагруженном сайте
Прежде чем вы ответите на этот вопрос, я никогда не разрабатывал ничего достаточно популярного, чтобы достичь высоких нагрузок на сервер. Относитесь ко мне как к инопланетянину, который только что приземлился на планету, хотя и знает PHP и несколько методов оптимизации.
Я разрабатываю инструмент в PHP , который может охватить довольно много пользователей, если он работает правильно. Однако, хотя я полностью способен разрабатывать программу, я в значительной степени невежествен, когда речь заходит о создании чего-то, что может справиться с огромным трафиком. Поэтому вот несколько вопросов по этому вопросу (не стесняйтесь превратить этот вопрос в поток ресурсов).
База данных
На данный момент я планирую использовать функции MySQLi в PHP5. Однако как я должен настроить базы данных в отношении пользователей и контента? Действительно ли мне нужно несколько баз данных? На данный момент все перемешано в одной базе данных - хотя я рассматривал возможность распространения пользовательских данных в одну, фактического контента в другую и, наконец, основного контента сайта (мастера шаблонов и т. д.) до другого. Я рассуждаю так: отправка запросов в разные базы данных облегчит нагрузку на них, поскольку одна база данных = 3 источника нагрузки. Кроме того, было бы это все еще эффективно, если бы они все были на одном сервере?
Кэширование
У меня есть система шаблонов, которая используется для построения страниц и замены переменных. Основные шаблоны хранятся в базе данных, и каждый раз при вызове шаблона вызывается его кэшированная копия (документ html). На данный момент у меня есть два типа переменных в этих шаблонах - статический var и динамический var. Статические VAR-это обычно такие вещи, как названия страниц, название сайта - вещи, которые не часто меняются; динамические VAR-это вещи, которые меняются при каждой загрузке страницы.
Мой вопрос по этому поводу:
Скажем, у меня есть комментарии к разным статьям. Что является лучшим решением: хранить простой шаблон комментария и отображать комментарии (из вызова DB) каждый раз, когда страница загружается или хранить кэшированную копию страницы комментариев как страницу html - каждый раз, когда комментарий является added/edited/deleted, страница повторно кэшируется.
Окончательно
Есть ли у кого-нибудь советы/указатели для запуска высоконагруженного сайта на PHP. Я почти уверен, что это рабочий язык для использования - Facebook и Yahoo! дайте ему большое преимущество - но есть ли какие-то переживания, которые я должен остерегаться?
Где я могу найти расширенный HTML репортеров для Simpletest?
Я использую Simpletest в качестве основы модульного тестирования для сайта PHP, над которым я сейчас работаю. Мне нравится тот факт, что он поставляется с простым репортером HTML, но я хотел бы немного более продвинутый репортер.
Я прочитал документацию reporter API, но было бы неплохо иметь возможность использовать существующий репортер, вместо того, чтобы делать это самостоятельно.
Есть ли хорошие расширенные репортеры HTML или GUI для Simpletest?
Советы по GUI для PHPUnit также будут оценены, но мой основной фокус-самый простой, для этого проекта. Я пробовал Cool PHPUnit Test Runner, но не был убежден.
Изображения в PHP
Можно ли создавать изображения с помощью PHP (а не просто связываться с ними через HTML), и если да, то где я должен сначала узнать о такой вещи?
Как я могу объединить массивы PHP?
У меня есть два массива животных (например).
$array = array(
array(
'id' => 1,
'name' => 'Cat',
),
array(
'id' => 2,
'name' => 'Mouse',
)
);
$array2 = array(
array(
'id' => 2,
'age' => 321,
),
array(
'id' => 1,
'age' => 123,
)
);
Как я могу объединить два массива в один с помощью ID?
Как предотвратить тайм-аут сеанса в Symfony 1.0?
Я использовал фреймворк PHP MVC Symfony для создания веб-приложения по требованию.
У него есть досадная ошибка-сеанс истекает примерно через 15-30 минут бездействия. Существует директива конфигурации для предотвращения истечения срока действия сеанса, но она не работает. Даже обходные пути, такие как этот, не помогли мне.
Я не намерен мигрировать в Symfony 1.1 (который исправляет эту ошибку) в обозримом будущем.
Кто-нибудь был там и решил это? Я был бы очень благодарен за подсказку или два!
Удаленная отладка PHP сценариев командной строки с помощью Zend?
Я использую Zend Studio для удаленной отладки моих скриптов php на сервере разработки. Он отлично подходит для веб-кода, но могу ли я заставить его работать со сценариями командной строки?
У меня есть несколько вспомогательных приложений, чтобы заставить мое приложение работать. Было бы очень полезно запустить удаленный отладчик через командную строку вместо веб-браузера, чтобы я мог проверить их.
Я предполагаю, что это возможно, так как я думаю, что Zend использует xdebug для разговора с Eclipse. По-видимому, он добавляет некоторые параметры к запросу, чтобы разбудить код Zend по запросу. Я предполагаю, что мне нужно будет подключиться к этому?
UPDATE
Я закончил тем, что использовал xdebug с protoeditor over X для отладки.
Наиболее эффективный способ получить данные из базы данных в сеанс
Каков самый быстрый способ получить большой объем данных (подумайте о гольфе) и самый эффективный (подумайте о производительности), чтобы получить большой объем данных из базы данных MySQL в сеанс, не продолжая делать то, что у меня уже есть:
$sql = "SELECT * FROM users WHERE username='" . mysql_escape_string($_POST['username']) . "' AND password='" . mysql_escape_string(md5($_POST['password'])) . "'";
$result = mysql_query($sql, $link) or die("There was an error while trying to get your information.\n<!--\n" . mysql_error($link) . "\n-->");
if(mysql_num_rows($result) < 1)
{
$_SESSION['username'] = $_POST['username'];
redirect('index.php?p=signup');
}
$_SESSION['id'] = mysql_result($result, '0', 'id');
$_SESSION['fName'] = mysql_result($result, '0', 'fName');
$_SESSION['lName'] = mysql_result($result, '0', 'lName');
...
И прежде чем кто-нибудь спросит "да", мне действительно нужно "SELECT
Edit: Да, Я дезинфицирую данные, так что не может быть никакой инъекции SQL, которая находится дальше в коде.
Итерация по сложному ассоциативному массиву в PHP
Есть ли простой способ перебрать ассоциативный массив этой структуры в PHP:
Массив $searches имеет нумерованный индекс, содержащий от 4 до 5 ассоциативных частей. Поэтому мне нужно не только перебирать $searches[0] через $searches[n], но и $searches[0]["part0"] через $searches[n]["partn"] . Трудная часть заключается в том, что разные индексы имеют разное количество частей (некоторые могут отсутствовать один или два).
Мысли о том, чтобы сделать это так, чтобы это было приятно, аккуратно и понятно?
Когда в классе PHP5 вызывается частный конструктор?
Допустим, я пишу класс PHP (>= 5.0), который должен быть singleton. Все документы, которые я читал, говорят о том, чтобы сделать конструктор класса закрытым, чтобы класс не мог быть непосредственно создан.
Так что если у меня есть что-то вроде этого:
class SillyDB
{
private function __construct()
{
}
public static function getConnection()
{
}
}
Есть ли случаи, когда __construct() вызывается иначе, чем если я делаю a
new SillyDB()
позвонить внутрь самого класса?
И почему мне вообще позволено создавать экземпляр SillyDB изнутри самого себя?
Использование MySQLi-что лучше для закрытия запросов
У меня есть привычка сводить использование переменных к минимуму. Поэтому мне интересно, есть ли какое-либо преимущество, которое можно получить следующим образом:
$query = $mysqli->query('SELECT * FROM `people` ORDER BY `name` ASC LIMIT 0,30');
// Example 1
$query = $query->fetch_assoc();
// Example 2
$query_r = $query->fetch_assoc();
$query->free();
Теперь, если я прав, Пример 1 должен быть более эффективным, поскольку $query - это unset , когда я переназначаю его, что должно освободить любую память, связанную с ним. Однако есть метод (MySQLi_Result::free()), который освобождает ассоциированную память - это одно и то же?
Если я не вызываю ::free() , чтобы освободить память, связанную с результатом, но unset , переназначив переменную, я делаю то же самое? Я не знаю, как регистрировать такие вещи - у кого-нибудь есть идеи?
Любимая Библиотека PHP
Как мой первый вопрос, я иду против правил FAQ: это субъективный и аргументированный вопрос. Извини за это.
Во всяком случае, мне было интересно, какую библиотеку использует разработчик power PHP. Не полный фреймворк (например, cakePHP), который заставляет вас кодировать и организовывать файлы определенным образом, а библиотека, полная полезных помощников, необходимых функций (немного похоже на прототип для JS). Конечно, есть SPL, но помимо этого?
Как реализовать веб-скребок в PHP?
Какие встроенные функции PHP полезны для веб-скрейпинга? Каковы некоторые хорошие ресурсы (веб или печать) для получения до скорости на веб-скрейпинга с PHP?
DOM манипуляции в PHP
Я ищу хорошие методы манипулирования HTML в PHP. Например, проблема, с которой я в настоящее время имею дело, - это проблема с деформированным HTML.
Я получаю входные данные, которые выглядят примерно так:
<div>This is some <b>text
Как вы заметили, в HTML отсутствуют закрывающие теги. Я мог бы использовать парсер regex или XML для решения этой проблемы. Тем не менее, вполне вероятно, что в будущем мне придется делать другие манипуляции DOM. Интересно, есть ли какие-нибудь хорошие библиотеки PHP, которые обрабатывают манипуляции DOM подобно тому, как Javascript справляется с манипуляциями DOM.
Как установить расширение php_gd2 в MAMP на Mac?
Я запускаю MAMP 1.7.2 на Mac и хотел бы установить расширение php_gd2. Как мне это сделать? Я знаю, что на Windows с помощью WAMP я бы просто выбрал запись php_gd2 в меню расширений, чтобы активировать ее. Как это делается при использовании MAMP? Я знаю, что могу сделать это с помощью MacPorts, но я бы предпочел не вносить никаких изменений в мою установку OS X по умолчанию PHP.
PHP эквивалент .NET/Java's toString()
Как преобразовать значение переменной PHP в строку?
Я искал что-то получше, чем сцепление с пустой строкой:
$myText = $myVar . '';
Как метод ToString() в Java или .NET.
Имеет ли PHP эквивалент этому типу подстановки строк Python?
Python имеет этот замечательный способ обработки подстановок строк с помощью словарей:
>>> 'The %(site)s site %(adj)s because it %(adj)s' % {'site':'Stackoverflow', 'adj':'rocks'}
'The Stackoverflow site rocks because it rocks'
Мне это нравится, потому что вы можете указать значение один раз в словаре, а затем заменить его по всему месту в строке.
Я пытался добиться чего-то подобного в PHP, используя различные функции замены строк, но все, что я придумал, кажется неудобным.
У кого-нибудь есть хороший чистый способ сделать такую замену строки в PHP?
Редактировать
Вот код со страницы sprintf, который мне больше всего понравился.
<?php
function sprintf3($str, $vars, $char = '%')
{
$tmp = array();
foreach($vars as $k => $v)
{
$tmp[$char . $k . $char] = $v;
}
return str_replace(array_keys($tmp), array_values($tmp), $str);
}
echo sprintf3( 'The %site% site %adj% because it %adj%', array('site'=>'Stackoverflow', 'adj'=>'rocks'));
?>
Как выбрать посты с определенными тегами / категориями в WordPress
Это очень конкретный вопрос, касающийся MySQL , как он реализован в WordPress .
Я пытаюсь разработать плагин, который будет показывать (выбирать) сообщения, которые имеют определенные "теги" и принадлежат к определенным "категориям" (оба несколько)
Мне сказали, что это невозможно, потому что так хранятся категории и теги:
wp_postsсодержит список должностей, каждая должность имеет "ID"wp_termsсодержит список терминов (как категорий, так и тегов). Каждый термин имеет двигатели СМД -wp_term_taxonomyимеет список терминов с их TERM_IDs и имеет определение таксономии для каждого из них (либо категория, либо тег)wp_term_relationshipsимеет связи между терминами и должностями
Как я могу присоединиться к таблицам, чтобы получить все записи с тегами "Nuclear" и "Deals", которые также относятся к категории "Category1"?
Какой кэшер PHP opcode следует использовать для повышения производительности?
Я пытаюсь улучшить производительность при высокой нагрузке и хотел бы реализовать кэширование кода операции. Какой из следующих вариантов следует использовать?
Я также открыт для любых других альтернатив, которые ускользнули от моего радара.
В настоящее время работает на складе Debian Etch с Apache 2 и PHP 5.2
[Обновление 1]
HowtoForge добавлены установочные ссылки
[Обновление 2]
Основываясь на полученных ответах и отзывах, я протестировал все 3 реализации, используя следующий план тестирования Apache JMeter в своем приложении:
- Авторизоваться
- Доступ К Домашней Странице
При наличии 50 одновременных подключений результаты выглядят следующим образом:
Нет Кэширования Кода Операции
APC
eAccelerator
XCache
График производительности (чем меньше, тем лучше)
Из приведенных выше результатов следует, что eAccelerator имеет небольшое преимущество в производительности по сравнению с APC и XCache. Однако самое важное из приведенных выше данных заключается в том, что любой вид кэширования кода операции дает огромную производительность boost.
Я решил использовать APC по следующим двум причинам:
- Пакет доступен в официальном репозитории Debian
- Более функциональная панель управления
Чтобы подвести итог моему опыту:
Простота установки: APC > eAccelerator > XCache
Производительность: eAccelerator > APC, XCache
Панель Управления: APC > XCache > eAccelerator
Определите Родительский Узел Элемента DOMElement
Я перевожу свой код C# для YouTube видео-комментариев в PHP. Чтобы правильно вложить ответы на комментарии, мне нужно перестроить узлы XML. В PHP я использую DOMDocument и DOMXPath, что близко соответствует C# XmlDocument. Я довольно далеко продвинулся в своем переводе, но теперь я застрял на получении родительского узла a DOMElement. В DOMElement не имеет свойства parent_node(), только DOMNode предусматривает, что собственность.
После определения того, что комментарий является ответом на предыдущий комментарий, основанный на строке "in-reply-to" в элементе ссылки, мне нужно получить его родительский узел, чтобы вложить его под комментарий, на который он отвечает:
// Get the parent entry node of this link element
$importnode = $objReplyXML->importNode($link->parent_node(), true);
Влияние кэша кода операции на использование памяти
Может ли кто-нибудь сказать мне, что такое накладные расходы на использование памяти, связанные с кэшем кода операции PHP ?
Я видел много обзоров opcode cache , но все они только концентрируются на повышении производительности. У меня есть небольшой начальный уровень VPS, и ограничения памяти беспокоят меня.
Получить размеры каталогов на удаленном хосте с помощью скрипта PHP
Я ищу что-то, что покажет мне размер каждой папки в моей основной папке рекурсивно.
Это сервер LAMP с CGI-Bin, поэтому большинство сценариев PHP должны работать или все, что будет работать в CGI-Bin.
Моя хостинг-компания не предоставляет интерфейс для меня, чтобы увидеть, какие папки потребляют наибольшее количество места. Я ничего не знаю в интернете и сделал несколько поисков, однако я пришел без каких-либо результатов.
Что-то, реализующее графики (GD / ImageMagick), было бы лучше, но не требуется.
Мой хост поддерживает только Perl в CGI-BIN.
Простой PHP-класс для Twitter API на OAuth?
Вчера обнаружили, что класс, который мы используем, более не может нам помочь с обновлением статуса в Твиттере, т.к. он основан на простой авторизации, которая недоступна со вчерашнего дня. Использовал класс от Felix Oghina, использование которого, в принципе, сводилось к:
$twitter = new Twitter(TWITTER_LOGIN, TWITTER_PASSWORD);<br/>
$success = $twitter->update($newstatus);<br/>
Не смог подобрать подходящий класс на OAuth. Буду признателен.
$twitter = new Twitter(TWITTER_LOGIN, TWITTER_PASSWORD);<br/>
$success = $twitter->update($newstatus);<br/>
Потокобезопасность классов
Кто как реализует потокобезопасность в своих классах при работе с разделяемыми ресурсами? Статический класс? Синхронизация (мьютексы, критические секции)? Статические члены класса?
Обращаете ли вы внимание на т.н. «Double-checked locking» (пресловутый Singleton, например). Что делаете?
Поделитесь своими решениями…
Посоветуйте компьютерную мышку
Мучаюсь перед выбором компьютерной мышки, но все никак не могу найти свой идеал. В данный момент у меня Mighty Mouse что шла в комплекте с iMac и она меня достала тем, что скролл постоянно залипает.
Требования к мышке:
— бесшумность (чтобы как можно тише клацали кнопки и скролл)
— эргономичность (чтобы рука отдыхала на мышке и ее можно положить целиком)
— проводная
— имела режимы переключения DPI (хотя бы два режима 800-1800 и обязательно кнопка переключения DPI сверху на мышке, а не под ней)
— совместимость с MacOS
— опционально, скролл в горизонтальном направлении
Кто видел такую?
Несколько баз Redis на хосте
Есть ли возможность разместить несколько отдельних баз данных Redis на одном хосте?
По-крайней мере, в php драйверах нет возможности задать конкретную базу. Использование псевдонимов (где-то в интернете был такой вариант) не катит — слышком слабая защита.
Как статьи из Википедии привязываются к GoogleMaps
В частности почему статью bit.ly/dzTQYI видно на карте, а статью bit.ly/b78LOf нет?
Пакетное форматирование исходников (php/html/js + mix)?
Посоветуйте тулзу, при помощи которой можно пакетно отформатировать исходники. Максимально настраиваемое, и что б нативные шаблоны с JS-вставками обрабатывало.
Желательно с наличием предустановленных профилей (Zend/Symfony1), поддержкой php 5.3.
Форматировщик в составе Netbeans последней стабильной версии мне подходит, но каждый файл нужно открывать руками. Может макрос какой для этого есть?
OpenID библиотека для PHP
Есть очень много реализация для PHP, нужна простая и/или ООП.
Кто-то что использует, порекомендуйте.
Сколько хранятся файлы при загрузке (php)?
При загрузке файлов методом POST файлы сохраняются во временную папку, которая установлена директивой upload_tmp_dir. Какое время он там храниться, если с ним ничего не делать? До окончания работы скрипта? Или?
Какова русскоязычная аудитория Твиттера на сегодня?
Искал примерные хотя бы цифры. Самые свежие данные, которые нашел — 183 тысячи ру-аккаунтов по данным Яндекса на март 2010. Может кто наталкивался на что-то более актуальное?
Какой из php-фреймворков более перспективный?
Какой из перечисленных php-фреймворков более перспективный:
1. Zend
2. Kohana
3. CodeIgniter
4. Yii
5. Свой вариант
Virtualmin настройка дефолтного ящика для mail() в php?
На сервере стоит LAMP и Virtualmin. Как настроить ящик с которого будет отправляться почта функцией mail() в php на виртуальном сервере. Если есть такое в Virtualmin, то желательно как это сделать с помощью него, если нет то подскажите в сторону каких конфигов или направлений копать.
Как не заснуть на работе?
Сижу перед монитором и глаза будто песком набиты. Есть какие-нибудь эффективные методы проснуться? Кто как себя будит? Кофе не предлагать — уже выпито :)
Мультиязычный транслит на PHP?
Нужно из текста на любом языке получать близкий по звучанию текст в ANSII.
Существует ли такое решение на php?
Как заставить Cogear использовать базы Sqlite?
Возникла необходимости использовать Cogear с Sqlite-базой.
Так как он основан на Codeigniter, который эти базы поддерживает, проблем, как мне кажется, быть не должно.
Куда копать?
Почему singleton круче global?
Собственно все жутко плюются и зеленеют при виде глобальных переменных и ратуют за использование вместо них Singleton-ов.
Собственно почему?
p.s. тема без холиворная, просто интересно, сейчас вот на гребне этой моды буду у себя вычищать глобалы (шаблон, юзер, конфиг)
Чем сгенерировать WSDL из PHP-кода?
Есть некоторое количество классов (в Zend, symfony и другие), которые так или иначе упрощают создание WSDL, но какие-то они мутные.
Хотелось бы генерировать WSDL в IDE, как делают все белые люди принято у дотнетчиков. По слухам старая Zend Studio умела это делать, новая — нет.
А чем генерируете вы?
Проверка занятости домена
Необходимо сделать на сайте проверку занятости домены, как это делают у себя на главной многие хостеры. Как это можно сделать по разумному. Ничего умнее парсинга curl'ом уже существующего сайта с такой проверкой не придумал :(
Как организован сервис audiko.net
Привет всем.
Кто подскажет как технически организован данный сервис.
В частности интересует каким образом организована обрезание трека. Если на стороне сервера, то какими средствами.
И как генерируется waveform.
Какова русскоязычная аудитория Твиттера на сегодня?
Искал примерные хотя бы цифры. Самые свежие данные, которые нашел — 183 тысячи ру-аккаунтов по данным Яндекса на март 2010. Может кто наталкивался на что-то более актуальное?
Какой из php-фреймворков более перспективный?
Какой из перечисленных php-фреймворков более перспективный:
1. Zend
2. Kohana
3. CodeIgniter
4. Yii
5. Свой вариант
Virtualmin настройка дефолтного ящика для mail() в php?
На сервере стоит LAMP и Virtualmin. Как настроить ящик с которого будет отправляться почта функцией mail() в php на виртуальном сервере. Если есть такое в Virtualmin, то желательно как это сделать с помощью него, если нет то подскажите в сторону каких конфигов или направлений копать.
Как не заснуть на работе?
Сижу перед монитором и глаза будто песком набиты. Есть какие-нибудь эффективные методы проснуться? Кто как себя будит? Кофе не предлагать — уже выпито :)
Мультиязычный транслит на PHP?
Нужно из текста на любом языке получать близкий по звучанию текст в ANSII.
Существует ли такое решение на php?
Как заставить Cogear использовать базы Sqlite?
Возникла необходимости использовать Cogear с Sqlite-базой.
Так как он основан на Codeigniter, который эти базы поддерживает, проблем, как мне кажется, быть не должно.
Куда копать?
Почему singleton круче global?
Собственно все жутко плюются и зеленеют при виде глобальных переменных и ратуют за использование вместо них Singleton-ов.
Собственно почему?
p.s. тема без холиворная, просто интересно, сейчас вот на гребне этой моды буду у себя вычищать глобалы (шаблон, юзер, конфиг)
Чем сгенерировать WSDL из PHP-кода?
Есть некоторое количество классов (в Zend, symfony и другие), которые так или иначе упрощают создание WSDL, но какие-то они мутные.
Хотелось бы генерировать WSDL в IDE, как делают все белые люди принято у дотнетчиков. По слухам старая Zend Studio умела это делать, новая — нет.
А чем генерируете вы?
Проверка занятости домена
Необходимо сделать на сайте проверку занятости домены, как это делают у себя на главной многие хостеры. Как это можно сделать по разумному. Ничего умнее парсинга curl'ом уже существующего сайта с такой проверкой не придумал :(
Как организован сервис audiko.net
Привет всем.
Кто подскажет как технически организован данный сервис.
В частности интересует каким образом организована обрезание трека. Если на стороне сервера, то какими средствами.
И как генерируется waveform.
Существует ли в природе form-builder (PHP) + validator (client+server) в одном флаконе?
Существует ли гибкий form-builder (PHP), позволяющий одновременно назначать правила для серверной и клиентской валидации?
Собственно вопрос о том, чтобы не повторять одну и ту же работу два раза, в частности на хабре уже была попытка осмысления этой проблемы и предложен один из выходов (вернее его прообраз) и как там правильно заметили:
основная мысль — генерация клиентской валидации на сервере
Например, для клиентской валидации и построения всяких вкусностей типа повторяющиеся блоки (к примеру zforms.ru/docs/repeatable-model/) есть красивые решения типа zforms.ru/ от разработчика интерфейсов компании Яндекс Дмитрия Филатова
Да и просто, для валидации полно плагинов с использованием jQuery.
В конце концов есть Vanadium: семантическая валидация на клиенте
Для построения форм и серверной валидации есть замечательная библиотека Алексея Борзова и, как поправил меня сам Алексей, — Bertrand Mansion: HTML_QuickForm2.
Есть первая версия HTML_QuickForm, которая позволяет делать то, что требуется, т.е. строить формы и на основании запрашиваемых правил серверной валидации на лету генерировать правила клиентской валидации, но у нее есть огромный минус — невозможность простыми способами строить сложные формы, т.е. когда требуется например группу полей добавлять в группу, зато ей очень хорошо удаются плоские формы.
Дмитрий Филатов на мой вопрос есть ли обертка для построения таких форм ответил мне в МоёмКруге:
Есть не обертка на PHP, а xml-описание правил валидации, из которого строится с помощью xsl клиентский код и которое может быть использовано для серверной валидации.
Алексей Борзов на вопрос о дальнейшей судьбе HTML_QuickForm2 ответил:
HTML_QuickForm2 в альфе потому, что опять же недописана функциональность (а именно интеграция с жаваскриптом). Но в отличие от старой версии он почти на 100% покрыт тестами и по стабильности явно не хуже...
Другими словами, есть дикое желание подружить HTML_QuickForm2 и zforms.ru, но перед этим хотел бы поинтересоваться у «ленивых программистов», как они борются с ленью при построении форм и двойной работой по проверке вводимых данных?
update: вопрос решил путем запуска проекта jquickform.ru/
Биты и байты
Почему объем меряют в Хбайтах (кило, мега, гига, тера), а скорость () — в Хбит/с, почему не в Хбайт/с?
Какой программой (под Win XP) можно скачать сайт с сохранением структуры папок и файлов?
Структура папок не должна изменяться, файлы должны быть с оригинальным названием.
Также программа должна скачать JS, CSS, картинки. В общем локальная копия сайта. Скачиваемый сайт на HTML + JS. Например в страницах есть превьюшки картинок которые раскрываются по клику, полные картинки тоже нужны.
Teleport Pro не совсем удачно справился с задачей. Какие есть еще варианты.
Испольование в одной таблице пары instance_id, instance_type в Doctrine
Здравствуйте,
столкулся с проблемой в doctrine.
Представьте есть три основных таблицы — participant, team, region.
Еще одна, пусть называется log, в которой храняться абсолютно одинаковые по структуре данные — rank, points, position и так далее для каждого объекта из первых таблиц.
Необходимо сделать так, чтобы по instance_id и instance_type можно было связать две таблицы — log и какую-то из основных, в зависимости от instance_type.
На первый взгляд все довольно просто, но после того как описал через обычный Doctrine_Query::create() и leftJoin, или через Doctrine_RawQuery::create() выдается ошибка, что не можен провести «гидрацию», т.к. у объекта Log нету связи на instance.
Если кто-то стыкался с такой трудностью, подскажите, пожалуйста, решение.
426   2   02:01, 25th August, 2020
PHP-функция mail(), 5-й аргумент?
Универсальный почтовый скрипт PHPMailer при отправке письма с помощью функции mail() в качестве 5-го аргумента функции подставляет строку "-oi -f mail@example.com".
Популярный фреймворк CodeIgniter делает тоже самое, только без флага "-oi".
Но valuehost.ru не отправляет письмо, если в 5-м параметре есть ключ "-f".
Не хочется (да и неправильно это) изменять код фреймворка. Правильнее было бы внести нужные изменения в настройки сервера, я думаю. Проблема в том, что я не знаю, какие это должны быть настройки (надеюсь, админы валюхоста пойдут навстречу, если я им подскажу, что и где исправить).
Кто-нибудь сталкивался с такой проблемой? Кто-нибудь знает, по каким причинам mail() может отказываться работать с ключом "-f"?
Заранее очень благодарю :)
Бекапы версий контента при создании статьи как реализовать? (PHP, MySql)?
К примеру в вордпрессе есть такая фишка

То есть на каждую статью приходится несколько версий, сохраненных через некоторый интервал с возможностью отката на каждую из них. Подскажите пожалуйста, как это грамотно реализовать средствами PHP и MySQl! Спасибо
ActiveRecord для PHP5.2
Может кто-нибудь подсказать хороший класс (не в фреймворке, можно использовать без него) для ActiveRecord работающий под PHP5.2?
Генерация xls (excel) файлов в PHP через Spreadsheet_Excel_Writer. Отступ у ячейки
Собственно в этом и есть вопрос. Нужно поставить у ячейки отступ с левого края. В документации ни слова о таком. Есть margin у самого листа. А вот у Format ни padding'a, ни margin'a, ни indent'a не обнаружил.
Использовать phpexcel не представляется возможным.
Спасибо.
Nginx + php-fpm + freebsd. проблема?
Собрал из портов nginx и php5 с php-fpm
Создал vhost для nginx
server {<br/>
server_name site1;<br/>
listen 80;<br/>
access_log /server/logs/nginx/site1.access.log;<br/>
error_log /server/logs/nginx/site1.error.log;<br/>
<br/>
location ~ \.php$ {<br/>
fastcgi_pass 127.0.0.1:9000;<br/>
fastcgi_index index.php;<br/>
fastcgi_param script_FILENAME /server/www/site1$fastcgi_script_name;<br/>
include fastcgi_params;<br/>
}<br/>
<br/>
location / {<br/>
root /server/www/site1;<br/>
}<br/>
<br/>
<br/>
}<br/>
Добавил в rc.conf
nginx_enable="YES"<br/>
php_fpm_enable="YES"<br/>
Запустил nginx и php-fpm
/usr/local/etc/rc.d/php-fpm start<br/>
/usr/local/etc/rc.d/nginx start<br/>
Результат:
PHP страницы не возвращают ничего, даже если это просто текст и там нет скриптов. В error.log nginxа php-fpmа ничего, в server/logs/nginx/site1.error.log тоже ничего.
Код ответа 200.
Кто может разъяснить?
Заранее спасибо.
server {<br/>
server_name site1;<br/>
listen 80;<br/>
access_log /server/logs/nginx/site1.access.log;<br/>
error_log /server/logs/nginx/site1.error.log;<br/>
<br/>
location ~ \.php$ {<br/>
fastcgi_pass 127.0.0.1:9000;<br/>
fastcgi_index index.php;<br/>
fastcgi_param script_FILENAME /server/www/site1$fastcgi_script_name;<br/>
include fastcgi_params;<br/>
}<br/>
<br/>
location / {<br/>
root /server/www/site1;<br/>
}<br/>
<br/>
<br/>
}<br/>nginx_enable="YES"<br/>
php_fpm_enable="YES"<br/>/usr/local/etc/rc.d/php-fpm start<br/>
/usr/local/etc/rc.d/nginx start<br/>
Как создать свой тип ввода в modx 2.0 Revo?
В Modx есть возможность при создании tv-параметров выбирать тип поля для ввода: картинка, число, текст и другие. Заметил, что некоторые дополнительные пакеты ставят свои поля ввода. Но я пока так и не понял, как можно в системе создавать свои кастомизированные поля ввода. Просвятите?
Отключение выполнения php-скриптов для поддиректорий виртуального хоста Apache
Поскажите, пожалуйста, что прописать в конфиге Apache, чтобы в определенных директориях виртуального хоста не выполнялись php-скрипты. PHP подключен через mod_php5.
Нагрузка от Doctrine
Умею спортивный интерес, как сильно грузит сервер использование Doctrine? Пробовал версию 1.2, очень смутило, что только подключение доктрины сразу увеличивает расход памяти на страницу на 3 МБ…
А в целом штука очень понравилась, поэтому хотелось бы использовать. Как дела обстоят с версией 2.0?
Freebsd + php-fpm?
Что скажите по такой связке? Дествительно ли работает быстрей чем linux + php-fpm?
Почему FastCGI+Nginx не видят настроек PHP?
Развернул на сервере классическую связку из Apache:8080+Nginx:80+FastCGI. При этом php при обращении к скриптам через 80 порт перестал видеть свои настройки (загружаются дефолтные). Пробовал выставлять настройки в php_value через .htaccess — всё равно они в упор не видятся.
А через 8080 порт все настройки нормально подтягиваются.
Сравните: clio.su/test.php vs. clio.su:8080/test.php (параметр upload_max_filesize для тестирования в php.ini выставлен 4M, в .htaccess 8M, default 2M)
Что нужно подправить в nginx.conf (httpd.conf), чтобы php.ini тоже принимал участие в работе связки через fastcgi? Чувствую, что решается проблема элегантно, но перелопатив яндекс, я не нашёл решения.
PS: И ещё попутный вопрос, тоже связанный с fastcgi. При использовании php функции mail() вся почта теперь отправляется с полем FROM: <www@внутреннее_имя_сервера>… и соответственно заруливается почтовиками по причине недействительности адреса. Переменная php sendmail_from не применяется.
UPD: Небольшое уточнение. У нас spawn_fcgi
Как правильно учиться PHP / mySQL?
Я сам учусь программированию на PHP/Mysql, и хочу попросить совета у хабрасообщества.
Вот список литературы что я использую для индивидуальной учёбы:
PHP 5 для чайников (Джанет Валейд)
PHP в подлиннике (Дмитрий Котеров)
PHP полезные приемы ( А.Орлов)
PHP/MySQL для начинающих (Энди Харрис)
MySQL полное руководство. Второе издание (Поль Дюбуа)
Вопрос таков: Я правильные книги выбрал?
Порой читаю книгу и складывается ощущение, что автор писал что бы только продать книгу и получить прибыль.
Разумеется опытный программист понимает все что в книге написано, но где именно так книга в которой чётко объясняют тот или иной сайт, как он устроен, через какие операторы и что работает.
Ведь проще понять на примерах чем читать длинный текст про то как хорошо работает функция на одном примере и все.
Посоветуйте пожалуйста.
Может будет у кого нибудь ссылка на интерактивные видео курсы?
json_encode в PHP: разрастание данных
В PHP есть встроенные средства преобразования данных в json. Рассмотрим пример:
echo json_encode(iconv('cp1251', 'utf-8', 'тест'));
Он вернет "\ u0442\ u0435\ u0441\ u0442" (пробелы дабы не искушать парсер) — это 26 байтов, а вовсе не 10, как хотелось бы.
Как же так?
Возврат к результатам поиска. (PHP)?
Не хочется изобретать велосипед, но толком решения найти немогу в сети. Поэтому пока не начал писать свое, хотел бы спросить у хабранаселения.
Имеется база данных, предположим, автомобилей. По поисковому запросу, состоящему примерно из 4-5 полей выводим список результатов, далее переходим на 4 страницу в результатах поиска. В итоге в URL у нас получается нечто подобное:
www.autosite.com/catalog/?page=4¶m1=21¶m2=...
На этой странице мы находим что нам нужно, и переходим на просмотр этого объекта:
www.autosite.com/view/id10001/
На странице просмотра этого объекта, необходимо выполнить, например, отправку заявки через форму на этот объект. Т.е. перезагрузить еще раз страницу.
Отсюда вопрос:
Как реализовать более корректно возврат к результатам поиска, т.е. таскание за собой постоянно в URL строку:
?page=4¶m1=21¶m2=33¶m3=13&...¶m44=123
Причем могут постоянно изменяться параметры поиска, добавляться-удаляться, и составление и таскание за собой этих параметров как-то не особо удобно. Пока что единственным вариантом вижу написание прослойки, которая будет обрабатывать любой входящий URL запрос и постоянно его передавать дальше. Хотя как-то это не очень красиво…
PHP. Сессии в БД. Кроссдоменная авторизация. Что-то я в этой жизни не понимаю?
Сессии хранятся в БД. Авторизация общая на 2 сайта(2 домена, сайты лежат рядом на одном сервере). Когда юзер авторизуется на одном сайте, происходит редирект на второй, где для session_name() прописывается та же величина, что и на первом сайте (в куках). Таблица с сессионными данными общая для 2х сайтов.
На старом хостинге все работало норм, на новом — пока нет.
Описание проблемы —
Я авторизовался с одного сайта. Захожу на второй, из базы извлекаются данные(фунция read), тут все норм. Но — сразу после session_start(), делаю print_r($_SESSION) и вижу пустой массив. Т.е. строку отдал, получил — … ничего не получил. Так происходит только с данными записанными на одном сайте, которые я пытаюсь прочитать на другом.
Что нашел — данные на старом хостинге писались в виде сериализованного масссива. Здесь же — 'rJFJvf6LVaiQoSWdAHmIFSu5Zfx-393AnbN81sd2B5jmEeWlhKYJB_E9Lv93BjVw'. Может быть в этом дело.
session.serialize_handler = php на обоих хостингах
php — 5.2.4(старый) / 5.2.14(нов)
все настройки php блока session — одинаковые.
Спасибо!
Можно ли нормально искать по твиттеру?
Твиттер не хочет находить то, что было написано в нем около двух недель назад.
Иногда спасает поиск гугла по сайту (site:twitter.com), но далеко не всегда.
Сами твиты есть – они гарантированно не удалены, их можно просмотреть.
Существует ли нормальный способ искать по содержимому твитов? А то оказываешь в ситуации, когда помнишь что информация (даже среди тех, кого ты зафолловил) проходила, но поиском её найти невозможно. Перечитывать все твиты даже за неделю очень долго.
Стоит ли хранить данные о пользователе в сессиях?
И собственно вопрос как лучше это делать.
Т.е к примеру я авторизую пользователя на сайте, создаю сессию и ее ID записываю в куку.
Далее, у пользователя есть куча данных, его логин, ID, ID всех городов, стран и областей проживания, его почта, теелфон и т.д. Все это может хранится в нескольких таблицах. Доступ к этим данным необходим если не на каждой странице то очень часто и везде дергать MySQL выбирая нужные данные, пускай и универсально, не очень хочется.
Возникает вопрос, стоит ли хранить всю пачку данные привязывая их к сессиям и как это сделать универсальнее, дабы потом легко эти данные выдергивать.
Т.е писать в таблицу:
session_id | serialize_data
или иначе как-то?
Все на любимом РНР )
Есть ли здесь люди, разбирающиеся в Shop-Script?
Есть у меня магазинчик на этом движке. Давно с этим движком уже не работаем, другие магазины на CS-Cart. Нужен доктор по Shop-script, полечить больного. Есть такие?
Куда идти после php? Ruby или Python?
Собственно вопрос в заголовке :) Хочется услышать принципиальные различия между языками. Для каких задач что лучше подходит?
Муки выбора PHP-фреймворка для разработки сайта, ориентированного на мобильных пользователей
Привет,
Возникло желание изобрести велосипед сделать некий весьма ёмкий сайт для мобильных устройств (смартфонов и им подобных) — т.е., html-ный. Есть желание реализовать на PHP, в связи с чем возникает вопрос: каким PHP-фреймворком воспользоваться?
Пожеланий крайне немного:
- Не заумная документация (можно даже на русском :))
- Наличие легкого MVC
- Поддержка (реализация?) i18n
- Легкий интерфейс к БД (mysql): мне все еще кажется, что зачастую запрос можно написать и руками; еще мне кажется, что у ZF с DBA перемудрили
- (желательно) Отсутствие излишеств :)
Городить с самого начала — очевидно, потеря времени. Разбираться во всем многообразии — с ума сойти можно. Может, порекомендуете?
Спасибо.
Схема хранения изменяющихся данных с историей
Есть около 300 тыс объектов ( например легковых автомобилей) для каждого автомобиля раз в неделю производится замер параметров ( пробег, давление в шинах, количество топлива), параметров будет в районе 20 штук, нужно все это хранить в базе.
В освновном пользователей интерисуют только последние параметры. Но иногда необходимо отвечать на вопросы типа «А как менялось давление в шинах во времени», «А какие параметры менялись на прошлой неделе»
Интуиция говорит, что наверное надо смотреть в сторону mongo, но тех задание явно говорит, что будем использовать Mysql :)
Пока родилось два варианта
1)
Первая таблица (название data)
id| object_name | param1 | param1_is_changed | param1_change_date | param2…
Вторая таблица (название data_history)
id| object_name | param1 | param1_is_changed | param1_change_date | param2… | version | change_date
При каждом изменении любого параметра, предыдущая версия записывается в data_history, у того параметра который изменился ставится влажок is_changed
2) Первая таблица (название data)
id| object_name
Вторая таблица ( хранит только последние значения)
id | object_id | param_name | param_value | date
Третья таблица ( хранит историю значений из второй таблицы)
Сейчас мы отслеживаем около 50 тыс объектов, в неделю происходит около 200 изменений в параметрах. Все параметры числовые, поэтому вопрос избыточности хранения в первом случае волнует только в плане производительности БД, но никак не места на диске. Второй метод вроде хорош, но его не очень просто реализовать используя ORM.
Ваше мнение? как спроектировать DB? как найти компромисс между эффективной БД и удобством написания приложения к ней.
OpenID+OpenAPI+всякие другие сервисы авторизации на PHP?
Язык — PHP. подскажите библиотечку, которую можно использовать для кроссервисной авторизации у себя на проекте. чтобы туда можно было подключать сервис, а на выходе получать от нее стандартные параметры авторизованного человека или не авторизованного.
по сути от пользователя надо получить только название сервиса, через который надо его авторизовать, а потом ответ сервиса правильно обработать…
Защита PHP скрипта от изменения / копирования
Какой, по вашему мнению, наилучший способ защитить свой проект на PHP от копирования и/или изменения. Рассматриваются любые варианты.
UPD.
Проект на PHP 5.3
Можно ли в php определить скачан файл или нет?
Необходимо понять можно ли используя php определить скачан файл или нет, если да, то сколько раз.
Я что-то такой возможности не помню и не вижу.
Можно сделать c использованием AJAX + PHP,
но это не то.
PHP framework или CMS c поддержкой FireBird
Есть клиентское приложение использующее базу Firebird. Нужно сделать для нее веб-интерфейс (хотя бы просмотр). Существует ли framework или CMS которые изначально поддерживают эту базу, чтобы не изобретать свой велосипед.
Отложенное выполнение кода в php
Приветствую!
Столкнулся с таким вопросом — как реализовать следующее:
Пользователь заходит на страницу a.php, его перенаправляет на b.php и в то же время вызывается и выполняется c.php
C.php — ресурсоемкий скрипт, который хотелось бы выполнять в фоновом режиме, в то время как пользователь дальше занимался своими делами на b.php
Как лучше отправлять нотификации из php?
Как лучше отправлять письма: через mail() или внешний smtp(google/yandex)?
Нотификаций будет достаточно много. Вероятно, каждую минуту или чаще.
Как убрать пустые переходы строк в коде html страницы
Помогите решить проблему. Обрабатываю текст в php при помощи strip_tags(), затем вырезаю /n /t /r при помощи str_replace() но текст получается вот такого вида
Практика использования оффшорных компаний в мире.
В программе:
Оффшорные, низконалоговые и престижные европейские юри
Как избавиться от этих переходов чтобы текст выглядел в коде страницы в одну строку?
Практика использования оффшорных компаний в мире. В программе: Оффшорные, низконалоговые и престижные европейские юри
Рекурсивный запуск PHP скриптов?
Подскажите, возможно ли рекурсивно запускать скрипты?
Чтобы было яснее, приведу пример.
Пусть имеется список изображений (вида id — filepath), которые нужно обработать. Мы вызываем скрипт a.php с параметром id первого изображения, например a.php?id=1. Скрипт обрабатывает одно изображение и вызывает сам себя, но с параметром id следующего изображения, например a.php?id=2, а сам умирает. Возможно ли реализовать такую систему?
Есть ли готовые решения для построения дерева зависимостей между файлами?
Хотелось бы получить(json,ini, ассоциативный массив,xml- как угодно) дерево включения файлов(что-то вроде этого).
Задача может быть решена тремя путями:
- 1. перегрузкой стандартных конструкций
- 2. какими-то магическими параметрами в отладчике(xdebug торт, но полную информацию о зависимостях между файлами не даёт)
- 3. grep-ом и созданием альтернатив(вроде ov_include и ловля источника через debug_backtrace)
- 4. с помощью силы воли и глаз пройтись по всем файлам
Первый вариант требует вмешательство в интерпретатор и трудозатраты на актуализацию патча под новые версии php.
Второй мне неизвестен. На всякий случай, конфиг Xdebug:
zend_extension_ts="D:\PHP\ext\php_xdebug.dll"
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "D:\server\profiling\"
xdebug.trace_output_name = %t.%s.%H
xdebug.collect_params 1
xdebug.collect_return 1
xdebug.collect_vars 1
xdebug.default_enable 1
xdebug.show_mem_delta 1
php_flag xdebug.auto_trace 1
xdebug.trace_format 1
Третий классный и наверное самый простой, но с точки зрения производительности суровый(создали static списковый массив внутри функции, который проверяет не пытаемся ли мы зациклиться или включить уже имеющийся файл, обработать backtrace, записать результаты) когда много файлов.
Четвёртый для больших проектов не подойдет.
Зачем.
Сейчас джуниоров набираю, а документация для движка готова лишь на треть. Хочется на плоттере распечатать схему работы каждой страницы, чтобы ребятам не пришлось угадывать откуда и что.
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "D:\server\profiling\"
xdebug.trace_output_name = %t.%s.%H
xdebug.collect_params 1
xdebug.collect_return 1
xdebug.collect_vars 1
xdebug.default_enable 1
xdebug.show_mem_delta 1
php_flag xdebug.auto_trace 1
xdebug.trace_format 1
Удаление некоторого текста с помощью PHP
Оговорюсь, что я пока ещё ламер в PHP.
Допустим, есть ссылка:
<a href="#" title="Title">Link</a>
Как удалить?
title="Title"
<a href="#" title="Title">Link</a> title="Title"
bitrix php размер каталога и память
Хочу сделать магазин на битриксе(порекомендовали)
Хотелось бы узнать как он работает с большими каталогами(30000 позиций товара)?
и объём потребляемой памяти какой будет при таких размерах каталога?
что бы сделать выводы по хостингу…
и может есть системы лучше и дешевле (интересно только php)?
Функция glob() в PHP?
Буквально недавно в проекте потребовалась функция поиска файлов по маске glob(). Но вот пока в раздумьях, стоит ли ее использовать, и насколько сильно она грузит сервер.
Задача такова:
Есть объект, предположим, автомобиль, у него есть 20-30 фотографий, которые складируются в 5 папок с разными размерами. Соответетсвенно при наличии в базе 20-30000 объектов фотографий может быть примерно около 150-200 000 файлов. Поиск по маске будет выполняться нечто типа такой: "/path/photos/[obj_id]_*.jpg" Так вот, что-то меня очень сильно смущает в использовании этой функции… И нигде не могу нарыть информацию о нагрузках.
Mod_auth_sspi странным образом роняет php. Как быть?
Привет, столкнулся я вот с такой проблемой.
Интранет сайт использует mod_auth_sspi для авторизации пользователей в домене.
На некоторых запросах php стал падать вот с такой ошибкой:
Warning: Attempt to assign property of non-object in D:\xampp\htdocs\info.php on line 5
Запросы на которых гарантированно все валится ничего особенного не делают. Создают и шлют довольно тяжелый запрос в БД. Но фишка в том, что запрос полностью отрабатывает, данные выводятся в браузер. Но следующий запрос, пусть даже к простейшему коду приведенному ниже, уже покажет ошибку, php уже калека.
<?php
class Test {
public $blank;
public function testIt($val){
$this->blank=$val;
}
}
$test=new Test;
$test->testIt('some value');
Т.е. любое обращение к свойствам класса через $this вызывает ошибку. Помогает рестарт апача.
Отключаю mod_auth_sspi и все работает как часы.
В логах apache ошибок нет.
Уж не знаю что и делать. Отписал на форум проекта на sourceforge, но на него надежды мало.
Сайт крутится под Windows Server 2003 R2 Standard Edition с XAMPP 1.7.3 (Apache 2.2.14, PHP 5.3.1)
p.s. На крайний случай, может как-то еще можно авторизовать в домене?
Zend Framework, MSSQL 2008 R2, PDO -> insert lastInsertId?
Как получить lastInsertId если делаешь в зенде
$model->insert(array(<br/>
'data1' => $data1,<br/>
'data2' => $data2,<br/>
));<br/>
$model->lastInserId(); — не работает…
$model->insert(array(<br/>
'data1' => $data1,<br/>
'data2' => $data2,<br/>
));<br/>
Округление в PHP
В документации к PHP, там где рассказывают про целые числа и, в частности, про перевод в int из float, говорят, что округление идет в сторону нуля и приводят такой пример:
<?php
echo (int) ( (0.1+0.7) * 10 ); // echoes 7!
?>
И у меня он действительно выводит 7.
Если же сделать
echo (int) ( (0.2+0.7) * 10 )
То выводит уже 9.
Я понимаю, что в первом случае восьмеркой является число 7.999999, которое в результате округления становится семеркой.
Вопрос(ы) в следующем:
- На всех ли машинах будут такие результаты?
- Это нормально?
echo (int) ( (0.1+0.7) * 10 ); // echoes 7!
?>
Оставлять логику PHP или отдавать JavaScript'у?
Пишу тизерную сеть и немного мучаюсь в сомнениях:
на рекламной площадке размещается код типа <script type=«text/javascript» src=«someurl.com/site_id/block_id»></script>
который, разумеется, подгружает уже полный JS-код для генерации тизерного блока.
Вот я и думаю — передавать клиенту уже отрендеренный блок (логика в php), или отдавать только данные блока в, например, JSON-формате, а рендерить его средствами JS (логика в JS)?
Как добавить тип файла в список поддерживаемых функцией mime_content_type?
Например, есть файл sample.mkv.
Если спросить php про mime-type этого файла, то получим «application/octet-stream». А желательный правильный ответ: "video/x-matroska".
Существует ли некий конфиг в самом php, или в ОСи, или в вебсервере, в который можно добавлять нужные строки соответствия?
PHP — как cоединяться с Mongo по требованию (отложенно)?
Модуль для работы с Mongo, входящий в комплекс поставки PHP предоставляет возможность соединяться с сервером не сразу — позволяя выбрать базу и коллекцию без установки соединения. Для этого есть вот такая конструкция:
$mongo = new \Mongo (MONGO_SERVER, array ("connect" => false));
Однако для того, чтобы выполнить любое действие с данными необходимо прежде вызвать $mongo->connect ().
В связи с чем возник вопрос — быть может уже есть готовое решение, некий слой для работы с Mongo наподобие Zend_Db или Rediska, где это уже реализовано?
Соединяться каждый раз — бессмысленно, изобретать велосипед — тоже не хочется, обратился к коллективному разуму :-)
Как отследить в каких полях формы сделали изменения
Как можно отследить какие поля были изменены в форме чтобы потом в PHP скрипте обрабатывать не всю форму, а только те поля которые были изменены или передавать в скрипт обработки только поля с изменениями.
P.S.: в форме достаточно большое количество полей
Функция substr и strlen в php не корректо работает с русскими символами. Как решить проблему?
Функция substr и strlen в php не корректо работает с русскими символами (кодировка utf8). Пробовал mb_substr также — не помогло.
Кто поможет решить проблему?
Выбор Моего Первого Фреймворка (PHP)
Всем доброго всего!
Внезапно понял, что знаю php на неплохом уровне(но не до php-specified тонкостей ООП конечно), хочу вот перестать изобретать велосипеды, как это и было с другими языками.
Что посоветуйте из не очень сложного для базовых операций?
Начать хочу, пожалуй, с простенькой БД типа helloWorld с категориями и пагинатором.
Заранее спасибо!
PS как обычно щедро засвечиваю за адекватные (в т.ч хорошо аргументированные) комментарии в карму.
Подскажите чем отправлять рассылку на PHP
Есть список подписчиков для которых формируется письмо и отправляется.
Чем посоветуете пользоваться для отправки большому количеству подписчиков?
phpmailer.worxware.com/ — не подходит т.к. очень медленно отправляет письмо и нагружает сервер.
В письме есть картинки их нужно тоже нужно отправлять.
Как использовать GeoLite ASN в php?
У maxmind есть база преобразований ip в ASN
www.maxmind.com/app/asnum
у кого-нить есть идеи как это в php использовать, специальной функции под asn нету, а при попытке использовать как Базу organisation, то выходит ошибка, что не правильный формат базы.
Напомните, пожалуйста, название PHPшного IDE
Как-то в очередной раз на хабре был опрос «каким IDE вы пользуетесь».
Тогда очень много пользователей ответили, что пользуются не перечисленным в списке IDE, его название я забыл.
Помню, что он был коммерческий, стоил где-то 100 баксов за лицензию.
И работал под маком.
Я тогда решил, когда заведу мак, поставлю себе его. А название забыл.
Напомните, пожалуйста.
PHP. Можно ли подгрузить файл с кодом из другого сервера?
Есть два шаред хостинга на которых лежат php-файлы, и нужно каким-то образом заинклюдить файл с однго сервера на другой. Возможно ли это?
Простейшая защита от DDOS на PHP?
Можно ли организовать простейшую защиту от DDOS не на уровне конфигурации сервера, а на уровне кода PHP? Может кто-то использует готовые решения, тогда поделитесь ссылочками, пожалуйста.
Что вставить в футер когда туда нечего вставить?
Заказчик попросил убрать контактную информацию на отдельную страницу Контакты, а в футер попросил вставить что-нибудь «на свой вкус», но чтобы не было пусто.
Какой шрифт использовать для разработки (phpstorm)
Всем привет. Стоял winxp + phpstorm — глаза привыкли к шрифту. Перехожу в ubuntu, поставил phpstorm, но шрифты все не те. Видимо придется привыкать заново. Какой шрифт лучше изначально использовать и не прогадать, чтобы глаза потом не уставали? В winxp стоял моноспейс, в ubuntu он совсем другой.
PHP: отправить файл, скачанный с сервера1, post запросом на сервер2?
Итак, есть к примеру картинка на сервере1 server1.ru/file1.jpg
Необходимо отправить этот файл на сервер2 (server2.ru) POST запросом.
Как сделать это максимально быстро и легче?
Мое предложение:
Для скачивания file1.jpg используем:
$fp = @fopen('http://server1.ru/file1.jpg', "rb");<br/>
$fd = @fopen('tmp/tmp_filename', "w");<br/>
if ($fp && $fd) {<br/>
while (!feof($fp)) {<br/>
$st = fread($fp, 4096);<br/>
fwrite($fd, $st);<br/>
}<br/>
}<br/>
@fclose($fp);
Затем используем CURL для отправки файла tmp/tmp_filename на сервер2.
Возможно есть способ быстрее?
ps: вот было бы здорово сделать все вышеперечисленное на стороне клиента с помощью какаго-нибудь jQuery и не грузить сервер этой ерундой =)
$fp = @fopen('http://server1.ru/file1.jpg', "rb");<br/>
$fd = @fopen('tmp/tmp_filename', "w");<br/>
if ($fp && $fd) {<br/>
while (!feof($fp)) {<br/>
$st = fread($fp, 4096);<br/>
fwrite($fd, $st);<br/>
}<br/>
}<br/>
@fclose($fp);
Sphinx. Множество запросов. PHP API
Здравствуйте.
Со сфинксом знаком мало.
У меня есть 5 страниц. На одной надо искать по всей базе.
Это сделано след. конфигом: pastebin.org/331010
Теперь мне надо как-то произвести поиск по базе где postid = конкретному значению, что-то
вписать в конфиге еще надо?
И что вписать в пхп файле для вывода другого поиска, а не
всей базы?
Надеюсь понятно объяснил :) Спасибо
PDO или ORM в PHP?
Раньше я разрабатывал все проекты на основе PDO DB. Сейчас прочитав много книг и статей, начал задумываться а правильный ли я подход использую? Везде идут советы по использованию Doctrine или Propel, как более удобное средство. Да, формат работы по приведённым примерам мне понравился. Но вот смогут ли эти библиотеки создавать сложные запросы с несколькими например JOIN'ами, и вообще как скажется использование этих библиотек на производительности?
Поэтому вопрос к общественности: «Чем Вы пользуетесь для доступа к БД, и почему Вы выбрали именно данный способ?».
Подскажите систему мониторинга за сложным PHP проектом
Доброго времени суток, хабралюди!
Прежде чем писть очередной велосипед самому, хочу спросить у коллективного разума, вдруг уже есть готовое решение?
Имеется большой и сложный проект, написанный на php. Очень много взаимодействия с внешими сервисами, выполняемых по крону.
Задача — нужен мониторинг некоторых значений (где-то — просто результата одного запрос а БД, где-то — весьма сложная логика, много запросов, много проверок).
Хочется
- иметь возможность посмотреть на значения «одим взглядом»- чтобы была какая-то сводная стрница
- получать уведомления на почту/sms о фейлах
Вдруг кто-то уже сталкивлся или писал что-то такое?
Посоветуйте CMS
С минимальным набором следующих функций: регистрация, профиль пользователя, админка, возможность оставлять комментарии. И всё это на php+mysql. Заранее спасибо.
Средства определения города в PHP по ip посетителя сайта?
Как определить из какого города России зашел посетитель? (Проект на Zend Framework-е )
Отдача картинок с GET параметрами не средствами nginx, а php
Тех. поддержка нашего выделенного сервера в аренду (под их управлением) упорно морочит голову, в ответ на вопрос:
Можно ли сделать, чтобы запросы изображений с GET параметрами отдавались php, а не nginx?
«www.site.ru/upload/articles/58fa0825907dc76e67e8cb1150a7ac36.jpg?w=100&h=100&strict»
При этом, что данная фича работает на нашем старом сервере, который админил фрилансер (но он пропал).
Куда тыкнуть пальцем тех.поддержку?
Спасибо
Как вы думаете, появится ли стабильный релиз smarty 3 до НГ?
Или Smarty 3 RC4 уже вполне работоспособный и его можно использовать?
Ищу сайт по выявлению ошибок в PHP
Учусь программированию PHP по книгам, форумам, разбираю примеры и т.п.
Скажем ситуация такая я написал несколько страниц сайта.
Титульная с формами, регистрация и вход в профиль и теперь ищу такой сайт который бы «зашёл» на мой сайт и подверг атаке известными способами: инъекции, java stript-ы и другое.
После атаки мне выдал бы список дыр которые надо прикрыть.
Мне хотя бы самые глупые ошибки увидеть и понять.
Буду очень благодарен за подсказки.
Не работает php5-fpm с php-apc на ubuntu 10.10?
Пославил пакеты php5-fpm и php-apc из официального репозитория ubuntu 10.10, сконфигурировал apc:
/etc/php5/conf.d/apc.ini
extension=apc.so<br/>
apc.enabled=1<br/>
apc.shm_size=128M
После перезагрузки php5-fpm на сайте ошибка:
Fatal error: Call to undefined function apc_exists() in /var/www/.../application/models/user_model.php on line 271
phpinfo(); через fpm отвечает, что модуль apc загружен.
Кто нибудь сталкивался с подобной проблемой?
extension=apc.so<br/>
apc.enabled=1<br/>
apc.shm_size=128MFatal error: Call to undefined function apc_exists() in /var/www/.../application/models/user_model.php on line 271
Посоветуйте простую и неизбыточную CMS
На php в основном писал отдельно классы, либо проекты с нуля. Сейчас пользуюсь kohana 3. Появилась необходимость сделать простенький сайт, а для таких вещей изобретать велосипед каждый раз надоело.
Посоветуйте пожалуйста какую небольшую, не перенасыщенную функциональностью, плагинами и кодом CMS лучше всего взять на вооружение.
Хотелось бы все прелести php5 и ООП, читаемый код, логичную и понятную структуру, WYSIWYG для редактирования контента, использование шаблонизаторов (Smarty или другой подобный, либо нативный альтернативный синтаксис), легкость создания и добавления своих модулей (т.е. скажем не менять всю логику движка для создания страницы «обратная связь»).
Самый лучший редактор PHP/XSLT/HTML/CSS/JS под Mac OS X?
Хотелось бы услышать мнение пользователей Mac OS X по теме. Можно без аргументации, но со ссылками. Сам некоторое время пользуюсь Coda, но при всех его достоинствах есть существенные недостатки:
— отсутствие autocomplete (да и вообще понимания) XSLT, что несколько замедляет работу
— отвратительный autocomplete для PHP (такие вещи, как private, static, class, extends и масса прочих отсутствуют, собственные функции/методы не анализируются и не подставляются, а в голове все проекты держать — с ума сойдёшь. Ну и вообще неудобно так.)
— отсутствие анализа проекта с целью формирования базы функций/классов/методов/свойств для autocomplete
— неудобная подсветка парных скобок в тех случаях, когда открывающая или закрывающая скобка вне области видимого экрана
Чего хочется:
— легковесности и нативности для Mac OS X (не нравится мне Eclipse и прочие java-based IDE, и всё тут. Некомфортно мне с ними работать. :( )
— нормальной реализации того, что перечисленно в теме и выше в тексте
— поддержки SVN/SFTP/FTP
Книга по PHP. Одна из двух
Что выбрать?
PHP в подлиннике от Котерева или PHP Профессиональное программирование, авторы Гутманс, Баккен, Ретанс?
кинул бы ссылки на озон, но, боюсь, что за рекламу сочтут
Какой шаблонизатор взять для нового проекта на php?
Многие по-инерции используют Smarty, кто-то пробует Twig, кто-то — экзотический Blitz, вот хочется узнать мнение общественности.
Blitz на мой взгляд имеет существенный недостаток — высокие трудозатраты на разработку, так как требуется плотное взаимодействие дизайнера и программиста для изменений и для быстрой разработки/прототипирования, на мой взгляд, не очень подходит.
Из Smarty-подобных систем мне же известен только Twig, быть может есть еще хорошие варианты? От шаблонизатора хочется объектности и расширяемости.
Проблема связи php и python через memcached?
если совершается set из php в memcache то при попытке сделать get по такому ключу из python получаю:
>>> import sys; print('%s %s' % (sys.executable or sys.platform, sys.version))<br/>
/usr/bin/python2.6 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) <br/>
[GCC 4.4.5]<br/>
>>> import memcache<br/>
>>> import binascii<br/>
>>> m=memcache.Client(['127.0.0.1:11211'], debug=0)<br/>
>>> def php_hash(key):<br/>
... return (binascii.crc32(key) >> 16) & 0x7fff<br/>
... <br/>
>>> m.get((php_hash(mfd.php_nexttime), mfd.php_nexttime))<br/>
Traceback (most recent call last):<br/>
File "", line 1, in NameError: name 'mfd' is not defined<br/>
>>> m.get((php_hash('mfd.php_nexttime'), 'mfd.php_nexttime'))<br/>
Traceback (most recent call last):<br/>
File "", line 1, in File "/usr/lib/pymodules/python2.6/memcache.py", line 779, in get<br/>
return self._get('get', key)<br/>
File "/usr/lib/pymodules/python2.6/memcache.py", line 766, in _get<br/>
value = self._recv_value(server, flags, rlen)<br/>
File "/usr/lib/pymodules/python2.6/memcache.py", line 915, in _recv_value<br/>
return val<br/>
UnboundLocalError: local variable 'val' referenced before assignment<br/>
<br/>
Устал гуглить может кто ни будь сталкивался?
>>> import sys; print('%s %s' % (sys.executable or sys.platform, sys.version))<br/>
/usr/bin/python2.6 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) <br/>
[GCC 4.4.5]<br/>
>>> import memcache<br/>
>>> import binascii<br/>
>>> m=memcache.Client(['127.0.0.1:11211'], debug=0)<br/>
>>> def php_hash(key):<br/>
... return (binascii.crc32(key) >> 16) & 0x7fff<br/>
... <br/>
>>> m.get((php_hash(mfd.php_nexttime), mfd.php_nexttime))<br/>
Traceback (most recent call last):<br/>
File "", line 1, in NameError: name 'mfd' is not defined<br/>
>>> m.get((php_hash('mfd.php_nexttime'), 'mfd.php_nexttime'))<br/>
Traceback (most recent call last):<br/>
File "", line 1, in File "/usr/lib/pymodules/python2.6/memcache.py", line 779, in get<br/>
return self._get('get', key)<br/>
File "/usr/lib/pymodules/python2.6/memcache.py", line 766, in _get<br/>
value = self._recv_value(server, flags, rlen)<br/>
File "/usr/lib/pymodules/python2.6/memcache.py", line 915, in _recv_value<br/>
return val<br/>
UnboundLocalError: local variable 'val' referenced before assignment<br/>
<br/>
Устал гуглить может кто ни будь сталкивался?
Denwer под Android
Кто может подсказать, возможно ли реализовать что-нибудь типа Denwera но на Androide, нужно чтобы тестировать работоспособность php скриптов на Tablet PC
Настройка дебагера в NetBeans (XDebug) в Firefox-е
Всем привет!
Помогите настроить нормальный дебаг (что бы можно было в FireFox-е выполнять какие-то операции со скриптом) в NetBeans с XDebug.
У меня имеется Win7 с денвером(XDebug установлен и работает нормально, можно дебажить в командной строке).
Как-то нужно настроить NetBeans с XDebug?
php.ini:
zend_extension_ts = Z:/usr/local/php5/ext/php_xdebug-2.1.0-5.2-vc6.dll
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_port = 9000
Заранее спасибо!
Поменять местами 2 строки в таблице mysql
Всем привет!
Есть таблица, например, с полями Id (int auto_increment) Name
Как с помощью sql запроса поменять местами Id у двух строк?
ЗЫ Хороших выходных :)
Emacs как IDE для PHP?
Добрый день.
Погуглил немного интернет, ютуб и хабр, но не нашел удовлетворения своему вопросу:
Может ли Emacs быть достойной заменой NetBeans как PHP IDE?
Я использую в NetBeans:
— Ctrl+Shift чтобы получить human-readable javadoc к функции
— /** + Enter, чтобы написать JavaDoc к функции, классу или файлу
— Alt+Shift+O для поиска файла по имени в проекте
— Short-cut для заливкли файла или файлов на сервер по FTP
— Short-cut для svn commit/update
К Emacs не относится, т.к. у него работа с буферами даже несколько удобней устроена, чем переключение по tab-ам NetBeans, но обычно я использую Ctrl+w для закрытия tab-а и Ctrl+Pg Down/Up для навигации по табам. В этом плане Emacs круче :)
Так вот может ли всё это Emacs? Насколько я понимаю, изза отсутсвия в Emacs понятия «проект», навигацию по имени файла в проекте мне уж точно не получить (что достаточно расстраивает :( )?
Программист: повышение уровня
Занимаюсь программированием на php для себя. Изучаю фреймворки, пишу небольшие проекты типа блогов да ToDo-сайтов. Появилось желание работать фрилансером, но как посмотрел что хотят заказчики — испугался. В общем чувствую себя неуверенно.
Как стать эльфом 80-го уровня профессиональным программистом и решать задачи любой сложности? Куда двигаться?
Задать umask для php5-fpm?
Почти все в заголовке.
Есть fastcgi апстрим на php5-fpm, работающий от пользователя www-someone. Нужно поменять ему umask.
Пробовал: поместить команду в ~/.profile, естественно не помогает.
Хочу изучить MVC в PHP, с чего начать? Какой фреймворк выбрать для проекта?
Собственно, два вопроса:
1) Хочу изучить MVC-подход в PHP, с чего начать, что почитать? (Желательно на русском для более быстрого восприятия)
2) Сейчас начинаю новый проект, думаю, что необходимо взять какой-либо фреймворк для облегчения разработки — а какой именно?
Гуру, подскажите, пожалуйста :)
PHP. Как лучше всего проверить существует ли сайт или нет
есть адрес сайта, каким оптимальным способом можно проверить его существование?
CURL
get_headers
fsockopen
fopen
Языки на сайте
Как лучше делать сайт…
Поддомены
ru.site.com, en.site.com, fr.site.com
или же
site.com/ru/
site.com/fr/
site.com/en/
Если второе, то как правильно делать ссылки внутри php
Php-fpm (Ubuntu 10.04) + eAcceleror — не удаётся сдружить?
Проблема в следующем,
имеется система Ubuntu 10.04, php-fpm (по этому руководству www.howtoforge.com/installing-nginx-with-php-5.3-a...) и nginx.
Хочу установить eAccelerator 0.9.6.1. После сборки eAccelerator из исходников
phpize<br/>
./configure --enable-eaccelerator=shared<br/>
make<br/>
make install
перегружаю php-fpm. Вижу следующее сообщение:
sudo /etc/init.d/php5-fpm restart<br/>
Gracefully shutting down php5-fpm . done<br/>
Starting php5-fpm PHP Deprecated: [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.3.2-1ubuntu4.5. Rebuild it for your PHP version (5.3.2-1ubuntu4.5ppa5~lucid1) or download precompiled binaries.<br/>
. done<br/>
Разумеется, eAccelerator не работает.
Как с этим бороться? как его скомпилировать именно под версию PHP 5.3.2-1ubuntu4.5ppa5~lucid1?
phpize<br/>
./configure --enable-eaccelerator=shared<br/>
make<br/>
make installsudo /etc/init.d/php5-fpm restart<br/>
Gracefully shutting down php5-fpm . done<br/>
Starting php5-fpm PHP Deprecated: [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.3.2-1ubuntu4.5. Rebuild it for your PHP version (5.3.2-1ubuntu4.5ppa5~lucid1) or download precompiled binaries.<br/>
. done<br/>
Лекгкий редактор PHP с форматированием и подсветкой?
Добрый день, пользуюсь NetBeans, он довольно тяжеловат и не подходит для быстрой правки\просмотра одиночных файлов…
Ищу простенький редактор, глаыный критерий, подсветка синтаксиса и автоформатирование кода… у нотепад++ не нашел автоформатирвоания, да и подсветка почему то только в ручную выставляется, автоматом не подлавливает…
подскажите?
Почему нет прироста после перехода на php-fpm с обычного php?
Собственно провел тест на ApacheBenchmark до и после. Разница несущественная.
И ещё такое странное ощущение, что php-fpm не держит код заинклюженных файлов в памяти, т.к. при изменении кода файла, отображается изменённый результат, а по идее должен отображаться старый (загруженный ранее).
Для перезагрузки есть команда /etc/init.d/php5-fpm reload но она по сути не нужна.
Или я забыл какой-то парамер в конфигурации указать?
php SOAP Extension
Начинаю постигать SOAP, наткнулся на такую проблему: при попытке обращения к соап функции выскакивает фатал еррор Uncaught SoapFault exception: [VersionMismatch] Wrong Version. Ниже приведен код примера.
$client = new SoapClient(
'http://new.starliner.ru/modules/trains/soap/test.wsdl',
array(
'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
)
);
$result = $client->trainRoute(array('day'=>'12', 'month' => '12', 'train' => '066А'));
Гугл показал что проблема такая возникает часто, а решения так и не дал.
Так в чем же соль?
'http://new.starliner.ru/modules/trains/soap/test.wsdl',
array(
'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
)
);
$result = $client->trainRoute(array('day'=>'12', 'month' => '12', 'train' => '066А'));
Как узнать стандартными средствами PHP, требуются ли аргументы для вызова метода?
Пишу свой велосипед для опыта, роутинг сделал как в CI:
CodeIgniter использует подход, основанный на сегментах адреса:
www.your-site.com/news/article/my_article
Сегменты в URL, соответствуют архитектуре Модель-Отображение-Контроллер и, как правило, строятся таким образом:
www.your-site.com/class/function/arg
В первом сегменте описывается контроллер class к которому происходит обращение.
Во втором сегменте происходит ссылка на функцию function или метод, который необходимо вызвать.
В третьем и последующих сегментах описываются переменные, которые будут переданы в эту функцию.
В CI метод может выглядеть к примеру вот так:
function hello ($name, $id) {
echo "\$name = $name";
echo "
";
echo "$id";
}
Теперь вопрос, в случаи, если в url не был передан один из аргументов для метода, естественно возникает ошибка.
Как можно проверить сколько аргументов требуется для вызова метода? Проверить нужно до вызова, поэтому func_num_args не получится использовать.
Или возможно другой выход из ситуации подскажите? Заранее премного благодарен.
PHP memcache — получить оставшееся время до удаления записи?
Или время добавления записи в memcache.
Возможно существует какой то не документированный метод для получения этого значения?
Конечно как вариант можно создать дополнительное поле, где держать точное время добавления записи, но это на крайний случай.
Задание дополнительного аругмента для ant или phing
Вопрос ко всем, кто использует ant или phing.
Я хочу написать сценарий, который будет деплоить некоторый проект на сервер. При этом, в строке запуска задачи я хочу иметь возможность указать переменную, которая будет указывать в каком окружении я собираюсь выполнять деплой (тестовое, продакшн и т.п). Хочется, чтобы это выглядело примерно следующим образом:
phing deploy test
Где deploy — это имя задачи, естественно, а test — это переменная, указывающая на окружение.
Мой вопрос: как в ant или phing можно перехватить значение второго аргумента (после имени задачи)?
Замена всех внешних ссылок через редирект
Добрый день.
Есть задача сделать php фильтр, который на вход получает html страницу а на выходе выдает туже самую страницу, но все внешние ссылки меняются на /away.php?url=blabla
Сама по себе задача не сложная, я через preg_replace это быстро сделаю, но у preg_ есть лимит в 100K, если текст больше этого лимита то функции не работают, можно конечно поднять лимит. но хочется чего-то более гибкого.
Какие я вижу варианты
1) Разбирать в DOM дерево и там менять, но тогда Не валидные документы не будут обрабатываться
2) Разбивать текст на куски меньше 100к и там менять, вопрос в том как разбить текст, чтобы граница не прошла по середине ссылки
3) Анализировать по каждой сточке, имхо тоже не лучший вариант.
Есть идеи?
Изучение нового основного языка. Java?
Возможно, мой вопрос не совсем подходит для Q&A, но это и не топик для хабра. Без предыстории на обойтись…
Около 7 лет занимаюсь программированием, около 5 лет зарабатываю этим на жизнь. После окончания университета прошло больше двух лет, а я все еще не устроился на работу, потому что увяз в собственных «проектах» (они приносят деньги, но не дают развития).
Изначально мною был сделан неудачный выбор: Delphi (windows-приложения) и PHP (веб). И тем, и другим владею на хорошем уровне.
На Delphi писал и оконные приложения (облегченный клиент для популярной MMORPG-игры), и многопоточные сервера (авторизационный сервер для той же игры), и относительно низкоуровневые библиотеки (SPI-провайдер, внешний модуль защиты клиентских приложений). Об одной своей разработке я писал на хабре: Аналог Time Machine для Windows
На PHP были разработаны как отдельные модули (личные кабинеты, админ-панели, внутренние библиотеки), так и полноценные сайты с нуля. Самый популярный ресурс на данный момент имеет около 30 тысяч уникальных посетителей в сутки (400-500 тысяч просмотренных страниц).
Само собой приходилось заниматься и администрированием (linux, apache, nginx), и работать с СУБД (MSSQL, MySQL), и писать HTML-страницы (CSS, Javascript, jQuery). Но это побочные знания, а не мой профиль.
Вчера начал изучать вакансии и понял, что оказался «в пролете» (не скажу, что это было большой неожиданностью): крупным IT-компаниям (yandex, mail, google, ...), завязанным на интернете, не нужны PHP-программисты. Работать в компании со штатом в 10 человек и делать каждую неделю очередной сайт на заказ я не хочу. Мне нравится создавать то, чем пользуются ежедневно тысячи людей. Я люблю программировать. Я хочу иметь возможность запустить браузер, загрузить страницу и сказать: «это сделал я».
Как добиться желаемого? Как попасть в Яндекс на должность разработчика? Очевидно, ответ следующий: изучить на достаточном уровне Java или C++. На что сделать ставку, чтобы в будущем не пожалеть? Наверное, Java.
Реально ли дома по книжкам изучить Java (и сколько на это может потребоваться времени), чтобы не провалить собеседование в Яндексе? Или Яндекс — это слишком высоко, и все равно придется сначала поработать в более мелкой компании для приобретения опыта.
Мне сейчас очень нужен вектор развития, потому что я не хочу еще один год топтаться на месте.
P. S. Или я ошибаюсь в том, что с PHP нельзя построить хорошую карьеру?
PHP, MySQL. антиповтор
Суть такая:
Есть база в которую заносится например имя автора (пользователем).
Пользователь может ввести: Пушкин, Пушкин Александр, Александр Сергеевич Пушкин, Пушкин А С, А С Пушкин (ну вы поняли. Как с этим грамотнее бороться? Чтоб не было как в VK и подобных.
Где бы найти преподавателя по PHP?
Кинул объявляние на паре phpшных форумов, но народ там в этом плане как то не очень активен, все предлагают читать книжки и с каждым вопросом бежать на форум, что я считаю не есть хорошо. Может есть какие то сайты, где тусуются преподы по различным направлениям, где можно найти человека?
Метрики php проекта
Подскажите чем можно собрать статистику по php коду? Процент покрытия кода тестами и другие.
Пока смотрю в сторону Sonar, может есть что-то по проще.
Автоматическая проверка PHP кода
Уважаемые хабраюзеры,
Недавно захотелось сделать автоматическую проверку PHP кода до деплоя на сервер (не Unit тесты). То есть, хотлось бы иметь такой инструмент, который говорил бы, что в коде возможно ошибка. К сожалению, я знаю только php -f (исполнение скрипта) и php -l (проверка на синтаксические ошибки). Возможно, есть какие то 3rd party тулзы для анализа. Гуглинг разрешения проблемы не дал, к сожалению (в основном предлагались плагины для известных IDE, а хотелось бы тулзу, зупускаемую из командной строки).
apt-cache search php | grep analy
тоже ничего не говорит хорошего :)
Если вы знаете подобные анализаторы, поделитесь, пожалуйста.
Как из php попинговать ip и вывести статистику?
функции типа system(); exec(); passthru(); возвращают только одну строку, например:
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
и всё. Что я делаю не так? как посмотреть статистику?
PHP tokenizer на Python?
Существует ли аналог tokenizer'a из PHP на Python, либо же подобные лексеры для разбора PHP-кода?
apache падает с signal 11
Подскажите как найти утечку.
Есть брендовая железка, на ней вертится пара сайтов на Joomla, Gallery2, DokuWiki, phpMyAdmin, Munin
Время от времени падает с таким записями в логе:
[notice] child pid 22048 exit signal Segmentation fault (11)
Пробовал ставить apache2-mpm-itk (надо было) — получаю в принципе тоже самое:
[error] child died with signal 11
В apache2.conf выставил LogLevel debug, в php.ini выставил error_reporting = E_ALL & ~E_DEPRECATED
но ничего в логах интересного нет, временами php ругается на Undefined variable и отсутсвие файлов и все.
Такое ощущение что память течет, но не могу понять кто виноват.
Немного о системе:
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION=«Ubuntu 10.04.1 LTS»
# uname -a
Linux myserver 2.6.32-21-server #32-Ubuntu SMP Fri Apr 16 09:17:34 UTC 2010 x86_64 GNU/Linux
# apache2ctl -V
Server version: Apache/2.2.14 (Ubuntu)
Server built: Sep 28 2010 12:53:28
Server's Module Magic Number: 20051115:23
Server loaded: APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
# php5 -v
PHP 5.3.2-1ubuntu4.5 with Suhosin-Patch (cli) (built: Sep 17 2010 13:49:46)
Copyright © 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright © 1998-2010 Zend Technologies
with Suhosin v0.9.29, Copyright © 2007, by SektionEins GmbH
Дополнительно установлен php-apc 3.1.3p1-2, пробовал обновляться до 3.1.4 и 3.1.5 — никакой разницы нет.
Весь установленный софт — из репов, сам ничего не собирал.
UPD: засада оказалась в связке Joomla + APC. Снес APC, настроил nginx+apache2+eAccelerator — несколько дней полет нормальный. Обновление версий ПО пока решил не проводить в экспериментальных целях.
Посоветуйте лучшие практики PHP
Мое приветствие.
Прошу посоветовать небольшой проект с открытыми исходниками с целью обучения PHP на примере «как это делают большие дяди». Качественный код (на ваш вкус), ООП (по возможности), небольшой объем (Drupal, WP и других монстров не предлагать), живое сообщество. Что бы было реализовано: разделение доступа, работа с БД, кеширование средствами PHP (необязательно), может, какие другие типичные задачи. Если будет еще и документация для разработчиков — вообще прекрасно. Еще одно пожелание, скорее всего, несбыточно: что бы соответствовал последним изменениям в языке, то есть что бы код был PHP 5.3.
Заранее благодарю, товарищи. Да прибудет с вами Сила.
Функция include() в PHP?
Никак не могу разобраться… Вне зависимости от того, на локальной машине ли или на виртуальном сервере происходит следующее:
На локальном сервере
Инклудится:
<? include("functions.php"); ?>
Не инклудится:
<? include("http://localhost/functions.php"); ?>
На удаленном сервере
Инклудится:
<? include("functions.php"); ?>
Не инклудится:
<? include("http://site.ru/functions.php"); ?>
На локальном сервере (файл в директории)
Инклудится:
<? include("./dir/functions.php"); ?>
Не инклудится:
<? include("http://localhost/dir/functions.php"); ?>
На удаленном сервере (файл в директории)
Инклудится:
<? include("./dir/functions.php"); ?>
Не инклудится:
<? include("http://site.ru/dir/functions.php"); ?>
Читаю мануалы, говорится, что инклуды работают только нелокально. Тут получается наоборот чтоли… Мне необходимо инклудить именно по адресу файла (site.ru/functions.php), а не относительно.
<? include("http://localhost/dir/functions.php"); ?>
Посоветуйте движок для уютного бложика :-)
Посоветуйте движок на PHP5 для личного блога для себя. Главное чтобы было уютно :-) Не хочется мегакомбайнов типа WordPress, хочется чтобы весь код и схему базы можно было легко объять в уме, предельно быстро разобравшись и допиливать под себя. Желательно чтобы код был как-можно современнее и качественнее, чтобы было приятно с ним ковыряться. Может знаете такой. Думал с нуля свой написать, да как-то лениво браться…
И ещё :-) Я сначала постеснялся удлинять список хотелок этим, рассчитывая что получу рекомендацию на что-то очень простое, которое буду дописывать сам. Но раз уж пошла такая пьянка и люди рекомендуют серьёзные, полнофункциональные штуки, дополню: многоязычность. чтобы к одному и тому же посту можно было написать тексты на разных языках и если пользователь выбрал, скажем, английский язык сайта, то ему бы показывались только те посты, для которых прописана английская версия (при этом серьёзно хочется чтобы разные языковые версии поста были жёстко связаны, а не делать это вручную отдельными блогами).
Окружность по трем гео-координатам?
Имееются координаты трех точек на карте.
Надо найти координаты центра описанной вокруг получившегося треугольника окружности.
Классическое геометрическое решение через перпендикуляры не подходит, без полиноминального преобразования, выполнять последнее очень не хочется (да и если честно не совсем понятно как его производить).
Нет ли идей как более простым способом найти центр?
расчет ведется на php

вот конкретный пример. Необходимые три точки обозначены в виде крестиков, четвертый крестик это центр окружности, получившийся при использовании классического подхода из геометрии, через перпендикуляры
задача вцелом (из риэлторской тематики):
Яндекс-карты не умеют определять пересечения улиц (
Мы придумали такой способ: есть база с домами (находящихся на улицах) и координатами этих домов. Надо найти перекресток двух заведомо пересекающихся улиц.
Выбираем все дома по этим улицам и ищем дома, находящиеся к примеру в пределах 200 метрах друг от друга (но на разных улицах ес-но, т.е. каждый дом с одной улицы сравниваем с каждым домом на другой улице). По-сути на картинке именно это и изображено (разные улицы = разные иконки). Дальше уже надо определить примерную область, в которой будет находится дом, указанный в объявлении как «перекресток улиц Тухачевского и Магнитогорской». Примерная область = окружность
PHP: memory_get_peak_usage под eAccelerator?
Крупный проект на PHP. Выкатываем новую версию на сервер — потребление памяти (memory_get_peak_usage в конце исполняемого кода) выросло в два раза.
Переполошились, начали копать.
Отключение eAccelerator показывает, что и старая и новая версии потребляют одинаково.
Включаем eA — опять разница в два раза.
Собственно, вопросы:
1. Поскольку потребление памяти одни и тем же скриптом с выключенным eA и с включенным eA заметно отличается, то был сделан вывод, что в случае работающего eA в потребляемую память не засчитывается опкод самого скрипта, ибо он лежит в разделяемой памяти. Так ли это? Если это не так, то чем ещё можно объяснить колоссальную разницу в результате memory_get_peak_usage в одинаковых условиях?
2. И самое главное: каково может быть разумное объяснение поведения, изложенного в первой части? Когда без eA расход памяти не изменился (и мы склонны этому верить), а при включении eA выдаётся совершенно нереальный прирост потребления.
MSSQL и php.ini mssql.textlimit
Ситуация такая:
в базе лежат картинки в base64 в поле типа text
при получении поля из пхп обычным запросом — поле с картинкой обрезается до 4096 байтов.
Как получить поле нормальной длинны?
Установил в php.ini
mssql.textlimit = 2147483647
mssql.textsize = 2147483647
— не помогает…
Еще находил такое решение:
$q = $db->query ('SET TEXTSIZE 2147483647');
$q->fetchAll();
ini_set ('mssql.textlimit' , '2147483647');
ini_set ('mssql.textsize' , '2147483647');
$q = $db->query("select CONVERT(TEXT, img) from [shop].[dbo].[news_image] WHERE id = $id");
$res = $q->fetchAll();
— результат тот же — возвращается только 4096 байт, т.е. нач. часть картинки.
Сталкивался ли кто нибудь с таким и как решал?
Сейчас решено хранимой процедурой которая собирает все в темповую таблицу и возвращает, а потом скрипт склеивает строки — ну это решения мягко говоря мне не очень импонирует :)
$q->fetchAll();
ini_set ('mssql.textlimit' , '2147483647');
ini_set ('mssql.textsize' , '2147483647');
$q = $db->query("select CONVERT(TEXT, img) from [shop].[dbo].[news_image] WHERE id = $id");
$res = $q->fetchAll();
Правильная работа мемкеша?
Здравствуйте.
Использую php + memcached
На странице вывожу 20 видео т.е. от каждого видео картинка, ссылка и название видео.
Также у меня сайт поддерживает много языков. (темплейтер использует )
Как правильно добавлять данные в мемкеш?
Каждую видеозапись кидать в мемкеш с ключом $video. $title. $key и на выходе уже обрабатывать темплейтером фразы <lang ...>
Т.е. на странице будет как минимум 20 «геттов» из мемкеша.
Или же записывать все 20 видео в 1 ключ $language. $video
Но тогда для каждого языка будет по одному ключу.
Языков у меня, допустим, 6
Надеюсь, объяснил номрально, если что — уточню.
Спасибо
Сортировка в PHP?
Есть такой код:
$array = array();
for ($count = 1; (($head = mysql_fetch_array($output1)) and ($text = mysql_fetch_array($output2))); ++$count) {
$array[$count] = $head[0];
printf($array[$count]);
echo "<br />";
echo "<br />";
$array[$count] = $text[0];
printf($array[$count]);
echo "<br />";
echo "<br />";
}
return $array;
Он выводит что-то типа:
First title
Fitst text
Second title
Second text
Third title
Third text
…
Нужно отсортировать в обратном порядке:
Third title
Third text
Second title
Second text
First title
Fitst text
…
Знаю о функции array_reverse(), но куда не пытался её здесь всунуть, не отсортировывает.
$array = array();
for ($count = 1; (($head = mysql_fetch_array($output1)) and ($text = mysql_fetch_array($output2))); ++$count) {
$array[$count] = $head[0];
printf($array[$count]);
echo "<br />";
echo "<br />";
$array[$count] = $text[0];
printf($array[$count]);
echo "<br />";
echo "<br />";
}
return $array;
Чат на PHP: узкое место БД — как решить?
Есть задача организовать простой чат с веб-интерфейсом и полной историей на действующем сайте на самописном движке (PHP5.3.3/MySQL5.1). Гугление по существующим решениям ничего хорошего не дало, либо избыточно, либо производит ощущение «наколенной поделки» и чаще всего давно не поддерживается, да и хотелось бы иметь одну архитектуру и стиль кодирования. В общем принято решение реализовать самостоятельно. С кодированием особых проблем нет, прототип реализовали, но нагрузочное тестирование с разными вариантами индексов и таблиц показало, что при уже ~20 хостах «читателей» и одним «писателем» в секунду MySQL затыкается (VDS c 1Гб RAM, мускулу половина отдана, и 2ГГц проц, nginx+php-frpm под Debian) даже на денормализованной таблице, т. к. кэшированию средствами БД запросы не поддаются (фильтры у каждого «читателя» свои, ибо приват, фильтрация в серверном приложении вряд ли будет эффективней чем в БД, как мне кажется, а у клиента недопустима). А хотелось бы на этом «железе» хотя бы 40-50 держать помимо основной нагрузки. Что может помочь? Опыта «хайлоад» нет, возникли такие идеи:
— написать демона для чата на субдомене, чтобы читал в основном потоке из БД только при старте (последние N сообщений) или редких специфичных запросах, хранил их у себя в памяти процесса (убивая старые), а писал в БД только «логи» для следующего старта (тогда фильтрация будет эффективна, имхо, плюс её можно будет осуществлять опережающе и инкрементно, храня сами сообщения в едином пуле, а для каждого читателя добавлять в список ссылок на «его» сообщения при поступлении сообщения от «писателя» лично для него или публичного, и удалять их оттуда при прочтении)
— аналогичным образом задействовать мемкэш (хотя пока с трудом представляю как обеспечить целостность, до того только с файловыми кэшами работал, которые сами не «испаряются») для обычного PHP-обработчика (то есть чтобы куча воркеров имела доступ к общему пулу сообщений и инкрементным личным спискам ссылок на них между запросами)
— перевести чат на NoSQL СУБД (какую? главная задача эффективная фильтрация по паре полей последних записей, типа WHERE timestamp > {last_time} (или id>{last_id}) AND (recipient_id IS NULL OR recipient_id={user_id}) ORDER BY timestamp (или id) DESC LIMIT {max_records} )
Что стоит попробовать или ещё какие могут быть варианты? Демона писать не хочется, так как усложнит администрирование и сервера, и собственно чата (аналог IRC команд делать?), опыта работы с кэшем и NoSQL практически нет.
Утилита для разбора error логов apache и добавление ошибок в багтрекер
Может кто-то знает или кто-то встречал подобное решение.
Что бы ошибки из лгов апача попадали в багтрекер (уже существующий или свой) с разным приоритетам в зависимости от важности ошибок. Либо посоветуйте что можно допилить.
Спасибо!
Как работает memcache?
Здравствуйте…
В стадии разработки проекта столкнулся с вопросом:
Нормально ли в 1 ключ пихать примерно 6 мб текста (объект ютуб класса) т.е. кешировать 6 мб текста в 1 ключе? Таких ключей по 6 мб может быть десятки тысяч.
И еще вопрос: мемкеш хранит данные на HDD или же в оперативной памяти?
Если в оперативной, то максимум я могу записать 64 метра (если предел стоит 64)?
Вчера на локалхосте проверял стату в мемкеше…
Number of bytes this server is allowed to use for storage установлено 64 Mega Bytes
А
Total number of bytes read by this server from network уже 69.00498104098 Mega Bytes
при этом
Number of valid items removed from cache to free memory for new items равен нулю…
Но почему тогда никакой перезаписи не произошло?
Вконтакте API сервер-сервер
Как известно, у Вконтакте есть несколько способов работы с API:
- через JS со стороннего сайта или из встроенного приложения
- на ActionScript для приложений
- и Desktop-приложения
Для того, чтобы организовать работу с сервисом в то время, когда пользователь не находится на сайте способа я не нашёл, иначе говоря, нет возможности совершать запросы к API сервер-сервер (за исключением нескольких специфичных функций).
В один момент показалось, что можно замаскировать сервер под desktop-приложение, но и там ложка дёгтя, после перехода на сайт Вконтакте для авторизации, он не в состоянии передать никаких данных нашему серверу.
Итак, вопрос. Можно ли как-то организовать взаимлдействие с API вконтакте в режиме сервер-сервер?
Нужен аналог расширения GeoIP (определение страны по IP адресу)?
Нужен вышеуказанный модуль определения страны по IP адресу посетителя на PHP.
С удовольствием взял бы сторонний, но к сожалению сходу ничего толкового не нашел с учетом моих условий. Взял бы «GeoIP», но там как я понял нужны определенные телодвижения хостера, мне не подходит. Решения, использующие для работы MySQL или обращения к внешним ресурсам так же не подходят.
Нужен грубо говоря локальный файлик ***.php (допустим в комплекте с локальной базой в фомате CSV, XML, TXT ...), подключив который можно будет вызвать искомую функцию.
Порывшись в закромах интернета нашел саму базу на maxmind.com — там есть бинарный формат и CSV. Сейчас начал писать свой скрипт на PHP, работающий с этой базой, но если кто подскажет уже готовый скриптик, буду премного благодарен.
Нужен QR-code декодер на PHP?
Задача: декодирование QR-кода средствами PHP из файлов PNG или JPG.
Погуглил, но сходу ничего удобоваримого не обнаружил…
PHP. Как получить имя файла по открытому file handle
Проблема. Есть функция, которая генерирует некоторое имя файла, записывает его в базу и выполняет
return fopen($filename);
И вот возникла задачка, как по возвращенному хендлеру получить имя открытого файла. Я адекватного способа сделать это средствами PHP не нашел.
PS. Да, вопрос носит сугубо теоретический характер, проблему я скорее всего решу переписыванием функции, чтобы она возвращала кроме хендлера еще и имя.
Отправить сообщение в твиттер через PHP
Не подскажите есть ли готовый пример отправки сообщения в твиттер через API на PHP.
Ранее все работало через curl, но с вводом oAuth все накрылось и работающих примеров что-то не нашел(
Проблемы с MySQL MyISAM — дублирование записей и крэш больших таблиц
Совершенно внезапно на рабочем проекте стали твориться непонятные вещи:
- отваливаются две самые большие таблицы — одна на гигабайт и порядка 70 миллионов записей, другая на 500 мегабайт и 700 000 записей. Примерно 100-1000 инсертов в секунду в первую и 2-5 во вторую. Из второй данные активно select'ятся
- периодически по неизвестным причинам база начинает выдавать ошибку too many connections. Скрипты оптимизированы, один скрипт — один экземпляр соединения (класс БД — «одиночка»)
- сегодня ни с того ни с сего данные начали дублироваться, один запрос проходил от двух до 13 раз. Причем не один какой-то запрос, а сразу несколько, которые идут друг за другом.
Скрипты проверил, всё в порядке, давно ничего не менялась, проект со средней посещаемостью. Никаких всплесков за сегодня нет.
Сервер выделенный, настройки стандартные, ОС — CentOS. Версия MySQL — 5.0.77
В чем может быть причина? Я с подобным никогда не сталкивался, никак не могу понять, что происходит.
Парсер резюме (PHP)
В проекте (PHP) стоит задача извлекать данные (ФИО, телефон, почта, образование, опыт работы...) из русскоязычных файлов резюме. В идеале это должен быть парсер .doc, .pdf файлов в формат HR-XML. Рассматриваем варианты покупки или разработки. Поиск на эту тему дал несколько вариантов англоязычных парсеров (sovren, rchilli...). Русскоязычных найти не удалось.
Возможно, мы плохо искали и такой парсер есть? Если нет, возможно люди с опытом подобных разработок смогут что-то посоветовать?
Спасибо за ответы.
Отсчет суток при использовании time()?
Привет всем, сижу ломаю голову как реализовать отсчет суток при использовании функции time()
Пример:
Пользователь может совершить лишь одно действие в сутки, НО реализация должна быть следующей. Сутки считаются не прибавлением к time() + 86400 секунд, а расчет до 00.00. Т.е. в 00.01 считаются уже новым днем как и положено. И пользователь может совершить действие вновь!
Экспорт из PHP в Excel/Google Spreadsheets?
Возможен ли экспорт из отправленной на сайте формы в существующий Excel или Google Spreadsheet файл (шаблон)? Видел несколько способов создания файла на лету, но ситуация такова, что файл слишком сложный, чтобы его создать при помощи php.
Или, может быть, есть другие программы/сервисы для создания электронных таблиц, помимо вышеупонянутых, в которые будет проще наладить экспорт? Никогда раньше не имел дел с офисным софтом.
Math library PHP?
Подскажите, пожалуйста, математическую и/или и статистическую библиотеку/классы.
Вкратце задача такая:
есть крайне большое количество данных, данные хорошо структурированы и достаточно полные.
Есть задача их проанализировать, т.е. средние значения, отклонения, Стьюденты, Байэсы, регрессивный анализ, графики и прочее.
Часть работы кину на БД, уж со всякими AVG она справится, часть на гугл — рисование графиков, а вот часть придётся писать, вероятно, так как сроки максимально сжатые, хотелось бы не изобретать велосипед, а использовать готовое.
На данный момент нашёл вот это www.phpmath.com/home, но пока ещё не полностью разобрался с тем, что я нашёл.
Спасибо.
P.S. уж очень не хочется всё скидывать в Маткад, а то и Excel
PHP: запуск задачи в фоне
Какие самые правильные и надежные подходы стоит использовать, если необходимо запустить некую длительную задачу в фоновом режиме?
Приведу пример, чтобы стало понятней:
есть основной php скрипт, контроллер, который обрабатывает пользовательские действия. Пользователь нажимает в интерфейсе волшебную кнопку, которая должна запустить долгоиграющую задачу и вернуть управление пользователю. При этом не требуется возвращать или как то дополнительно обрабатывать результат работы длительного скрипта.
Знаю, что для подобных задач существуют различные библиотеки для создания очереди сообщений, но конкретно для моего примера это избыточно.
Так же хотелось бы обойтись без cron-task-ов и других ОС-специфичных вещей.
Спасибо.
Материалы по интеграции веб-приложений с 1С
Хочу научиться интегрировать свои и чужие продукты (CMS и т.д.) с 1С. Где почитать обучающие материалы по этому поводу? В сети куча предложений по услугам интеграции с 1С, а вот обучающих материалов как научиться делать это самому — нет.
Ссылки приветствуются!
Примечание: под «продуктами» подразумеваются различные веб-приложения, написанные на PHP.
Альтернативы DbSimple
Уже год, как пользуюсь в своих проектах DbSimple, но для высоконагруженных проектов хотелось бы что нибудь побыстрее. Что посоветуете?
Обмен данными между PHP и серверным приложением на С++ Qt4?
Нужно с PHP передать на серверное приложение данные по SSL, дождаться ответных данных и вывести их на экран.
Написал такой код на PHP:
<br>
<?php<br>
error_reporting(E_ALL);<br>
<br>
$fp = fsockopen("ssl://localhost", 6000);<br>
<br>
$send = "hello";<br>
<br>
fputs($fp, $send);<br>
$html = fread($fp, 1000000);<br>
fclose($fp);<br>
<br>
echo "<pre>".$html."</pre>";<br>
?><br>
И функция приема сообщения на QT4
<br>
void CConnThread::slotReadyRead()<br>
{<br>
//Создать поток данных.<br>
QDataStream in(sslSocket);<br>
in.setVersion(QDataStream::Qt_4_4);<br>
<br>
//Если пришла первая часть из посланной клиентом информации.<br>
if(blockSize == 0)<br>
{<br>
cout << "data transfer from client" << endl;<br>
//Если первая часть меньше того кол-ва информации что определяет размер всего сообщения...<br>
if(sslSocket->bytesAvailable() < (int)sizeof(qint64)) return;<br>
<br>
//Получить размер посылаемого клиентом сообщения.<br>
in >> blockSize;<br>
}<br>
<br>
//Если последующие части вместе взятые меньше, чем определенное клиентом кол-во...<br>
if(sslSocket->bytesAvailable() < blockSize) return;<br>
<br>
//Обнулить параметр размера посылаемого клиентом сообщения.<br>
blockSize = 0;<br>
<br>
//Получить строку сетевого сообщения.<br>
QString message; in >> message;<br>
<br>
//Далее... творим ;)<br>
<br>
cout << message.toAscii().data() << endl;<br>
<br>
this->sendMessage("received!");<br>
}<br>
<br>
void CConnThread::sendMessage(QString message)<br>
{<br>
QByteArray block;<br>
QDataStream out(&block, QIODevice::WriteOnly);<br>
out.setVersion(QDataStream::Qt_4_4);<br>
out << (qint64)0;<br>
out << message;<br>
out.device()->seek(0);<br>
out << (qint64)(block.size() - sizeof(qint64));<br>
sslSocket->write(block);<br>
}<br>
Но вот проблема — данные приходят (о чем свидетельствует вывод строки data transfer from client), но не выводятся на экран. Сам же ПХП-скрипт подвисает после отправки (ждет ответа, но не получает его). Что я сделал не так?
<br>
<?php<br>
error_reporting(E_ALL);<br>
<br>
$fp = fsockopen("ssl://localhost", 6000);<br>
<br>
$send = "hello";<br>
<br>
fputs($fp, $send);<br>
$html = fread($fp, 1000000);<br>
fclose($fp);<br>
<br>
echo "<pre>".$html."</pre>";<br>
?><br><br>
void CConnThread::slotReadyRead()<br>
{<br>
//Создать поток данных.<br>
QDataStream in(sslSocket);<br>
in.setVersion(QDataStream::Qt_4_4);<br>
<br>
//Если пришла первая часть из посланной клиентом информации.<br>
if(blockSize == 0)<br>
{<br>
cout << "data transfer from client" << endl;<br>
//Если первая часть меньше того кол-ва информации что определяет размер всего сообщения...<br>
if(sslSocket->bytesAvailable() < (int)sizeof(qint64)) return;<br>
<br>
//Получить размер посылаемого клиентом сообщения.<br>
in >> blockSize;<br>
}<br>
<br>
//Если последующие части вместе взятые меньше, чем определенное клиентом кол-во...<br>
if(sslSocket->bytesAvailable() < blockSize) return;<br>
<br>
//Обнулить параметр размера посылаемого клиентом сообщения.<br>
blockSize = 0;<br>
<br>
//Получить строку сетевого сообщения.<br>
QString message; in >> message;<br>
<br>
//Далее... творим ;)<br>
<br>
cout << message.toAscii().data() << endl;<br>
<br>
this->sendMessage("received!");<br>
}<br>
<br>
void CConnThread::sendMessage(QString message)<br>
{<br>
QByteArray block;<br>
QDataStream out(&block, QIODevice::WriteOnly);<br>
out.setVersion(QDataStream::Qt_4_4);<br>
out << (qint64)0;<br>
out << message;<br>
out.device()->seek(0);<br>
out << (qint64)(block.size() - sizeof(qint64));<br>
sslSocket->write(block);<br>
}<br>
Книги по ООП в PHP
Посоветуйте пожалуйста популярных книг по ООП в PHP. На русском или на английском. Раньше все делал в процедурном стиле, но чувствую надо двигатся дальше. С ООП в целом знаком, но хотелось бы почитать что-нибудь конкретно применительно к PHP, особенности там какие, best practice и т.п.
Спасибо.
Блокировка страниц при совместном редактировании
Доброго времени суток.
Есть такая структура базы данных

Краткое описание:
users — таблица пользователей.
user_roles — роль пользователя в конкретной свадьбе, пользователь может участвовать в редактировании
нескольких свадеб.
wedding — таблица свадеб.
user_edit_rights — Права пользователя в конкретной свадьбе на редактирование того или иного модуля.
user_module_locks — Блокировки пользователем конкретного модуля
user_right_modules — список модулей которые можно редактирвать.
modules — список всех модулей на сайте.
Задача сделать блокировку отдельных страниц для совместного редактирования,
то есть чтобы страницу мог редактировать только один пользователь.
Я решил сделать так:
1. После того как пользователь заходит на страницу выполняется следующий запрос.
SELECT
users.user_id,
modules.module_id,
IF(user_edit_rights.user_id = users.user_id, 1, 0) AS user_can_edit_module,
my.module_id AS user_lock_module_id,
IF(other.user_id != users.user_id,1,0) AS another_user_lock_module
FROM users
INNER JOIN user_roles ON users.user_id = user_roles.user_id
INNER JOIN wedding ON wedding.id = user_roles.wedding_id
LEFT JOIN modules ON 1
LEFT JOIN user_edit_rights ON user_edit_rights.user_id = users.user_id AND user_edit_rights.wedding_id = wedding.id AND user_edit_rights.module_id = modules.module_id
LEFT JOIN user_module_locks AS my ON my.wedding_id = wedding.id AND my.user_id = users.user_id
LEFT JOIN user_module_locks AS other ON other.wedding_id = wedding.id AND other.module_id = modules.module_id
WHERE users.user_id = 3285
AND wedding.id = 72
AND modules.name = 'gifts'
Результат его выполнения выглядит примерно так:
users.user_id,
modules.module_id,
IF(user_edit_rights.user_id = users.user_id, 1, 0) AS user_can_edit_module,
my.module_id AS user_lock_module_id,
IF(other.user_id != users.user_id,1,0) AS another_user_lock_module
FROM users
INNER JOIN user_roles ON users.user_id = user_roles.user_id
INNER JOIN wedding ON wedding.id = user_roles.wedding_id
LEFT JOIN modules ON 1
LEFT JOIN user_edit_rights ON user_edit_rights.user_id = users.user_id AND user_edit_rights.wedding_id = wedding.id AND user_edit_rights.module_id = modules.module_id
LEFT JOIN user_module_locks AS my ON my.wedding_id = wedding.id AND my.user_id = users.user_id
LEFT JOIN user_module_locks AS other ON other.wedding_id = wedding.id AND other.module_id = modules.module_id
WHERE users.user_id = 3285
AND wedding.id = 72
AND modules.name = 'gifts'
| user_id | module_id | user_can_edit_module | user_lock_module_id | another_user_lock_module |
|---|---|---|---|---|
| 3285 | 10 | 0 | 2 | 0 |
После этого я могу либо добавить запись в таблицу user_module_locks
либо обновить либо удалить ненужные блокировки. То есть дальнейшая
логика приложения зависит именно от результата выполнения данного запроса.
Меня смущают 6 джоинов (в идеале 8-9) и постоянная необходимость выполнения этого запроса
и запроса на манипуляцыю (update, insert, delete) данных в таблице user_module_locks
данные в этой таблице будут постоянно изменятся при переходе пользователя от одной
страницы к другой. EXPLAIN данного запроса показывает что все SIMPLE и скорее всего
одновременного редактирования многими пользователями не будет (онлайн < 10 человек).
Больше всего меня интересует вопрос нормально ли это когда для получения полной
сущьности используется один запрос с большим кол-вом джоинов?
А также примерный алгоритм для организации редактирования данных несколькими
пользователями сразу.
А также нормально ли когда первичный ключ состоит из 3х и более полей?
win7 64bit + 32bit apache2 + php
Пытаемся настроить апач на винде 7й. Апач 2.2.17 no-ssl, php 5.2.17. Винда — 64 бита, апач и пхп 32 бита, т.к. пхп 64 битного нет.
Указывает php.ini, указываем путь к apache2_php.dll — перезапускаем сервер и… «Операция неожиданно завершилась»
В системном журнале:
«Сбойное приложение httpd.exe, версия 2.2.17.0, штамп времени 0x4cbbe9e8, сбойный модуль php5ts.dll, версия 5.2.17.17, штамп времени 0x4d25fb49, код исключения 0xc0000005, смещение ошибки 0x000f424c, ИД процесса 0x20d8, время запуска приложения 0x01cbc7c25385407e.»
Кто нибудь встречался с таким? Что может быть? Может из за несовпадения разрядности (64 vs 32)?
Развертка веб-приложений на windows-серверах(iis, php)
Есть такой вопрос — кто какими средствами для развертки новых версий приложения пользуется на windows?
На *nix — есть capistrano, chef и иже с ниим, а для windows готовых решений найти не удалось. На данный момент используется самописный скрипт развертки, однако такое решение будет работать только пока сервер один.
Статьи про кэширование в PHP
Кэширование в PHP для меня до сих пор остаётся тёмной областью. Во многом это связано с том, что все статьи деляться на две категории:
1) Сейчас мы расскажем вам про буферизацию вывода...(до чего я и сам додумался :) )
2) Работа с memcache и нагруженные проекты(что превышает мои потребности на данный момент)
Между тем, посмотришь на коды различных CMS: там всё намного разнообразнее. Кроме кэширования целой страницы могут кэшироваться отдельные модули, результаты запросов, вот это всё меня и интересует больше всего. Но по коду осознать реализацию у меня не очень получается.
Теоретические то статьи я видел, практики бы, как это лучше писать, чтобы потом не пришлось переписывать, периодечески матерясь :)
Образцовые PHP web приложения с открытым кодом для обучения?
Ищу web приложения исходники которых очень помогут в самообучении.
358   8   06:48, 15th August, 2020
Суб доменные сессии через аякс запросы
Вот начал разбирать эту тему, нашел интересную проблему:
Установил параметры в .htacess
php_value session.cookie_domain .portal.my
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule >
В php указал для всех кук те же параметры
session_set_cookie_params(60*60*24*14,'/','.portal.my');
Проверил — все куки нормально ставятся на .portal.my и доступны с любых под доменов. Но проблема возникла в аякс запросах: Параметр «Header set Access-Control-Allow-Origin „*“» разрешает делать аякс запросы на суб домены, но куки, которые с них приходят он игнорирует, хотя фаербаг показывает, что они приходят. Подскажите, как с этим бороться?
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule >
PHP генератор графиков
Всем привет!
Пишу модуль для генерации отчетности на сайте, необходим скрипт, который будет генерировать графики (конкретно отображать количество определенных событий по дням)
До сих пор пользовался jqPlot для вывода графиков на страницы, теперь понадобилось вставлять графики в pdf-документ, поэтому нужен простой скрипт чтобы я ему скрамливал csv/массив с данными а он сам выбирал шаги координатных осей и все остальное и отдавал мне готовую картинку, пригодную для вставки в PDF
Графики такого рода:

Понятно что можно написать и самому но предвижу кучу мороки с автоподбором шага координатных осей, поэтому интересуюсь наличием готовых решений
Типы в PHP. Разрыв шаблона
<?php
$result = (0 == "php") ? TRUE : FALSE;
var_dump($result);
// Почему TRUE???
$result = (0 == "php") ? TRUE : FALSE;
var_dump($result);
// Почему TRUE???
Оптимизация phpBB 3
Крутится форум на phpBB 3, сообщений около 100000, размер БД сейчас — 300 мегабайт.
На главной странице форума около 130 запросов за раз, в разделах категорий ~70.
Как это оптимизировать? С ходу кэширующих плагинов не нашел, только какой-то кустарный способ прикручивания memcached.
UPD: поставил APC, полегчало. Но ищу решение на стороне phpBB, уменьшить кол-во запросов.
Подход или реализацию для валидации форм?
Есть несколько форм, необходимо провести валидацию данных для каждой формы в отдельности. Есть несколько проблем:
Как должна выглядеть валидация:
необязательного поля, но, если оно заполнено, то оно должно соответствовать определённому условию,
нескольких необязательных полей, но хотя бы одно из них должно быть заполнено,
нескольких необязательных полей, но, если заполнено одно из них, то должны быть заполнены и остальные?
Как должна выглядеть композиция предыдущих пунктов?
Или не стоит заморачиваться на такую гибкость и написать специальные проверки для таких случаев?
Безопасный кроссдоменный обмен данными между AJAX и PHP
На одном сервере лежит PHP скрипт, на другом есть сайт, использующий AJAX. Как передавать между ними данные, чтобы гарантировать конфеденциальность и невозможность подделывания (вместо AJAX может быть и Flash, и обычные GET/POST запросы — на сокетах то просто, а нужно вот так вот)?
Единственное, что приходит в голову, это дополнительный скрипт ПХП и сокеты + SSL. Но это не очень удобно (т.к. может использоваться флеш без ПХП). Использование секретных ключей не кажется мне безопасным — флеш или яваскрипт легко стянуть и подстмотреть всю информацию. RSA — в одну сторону отправлю, но в обратную опять же — можно подсмотреть секретный ключ.
Какие есть варианты?
Организация кода, паттерн, php?
есть какой метод, кроме результата от работы этого метода хочется получать какую-то инфу
например вот код:
public function parserText($a) {<br/>
...<br/>
return $b<br/>
}
но в результате работы кода, например, текст $a был слишком длинным и мы его обрезали до 100 символов. Или мы обработали $a и вернули $b, но в при обработке кода мы обрабатывали $a как будто он в кодировке ХХХ
Так вот вопрос, как собирать подобную сопутсвующую инфу работы скрипта.
возвращать return (array($b, $infoMessage)); не хочется — слишком крутые изменения по коду, да и интерфейс нарушается,
Могу ещё внедрять в метод передачу по ссылке и после работы скрипта смотреть что в $infoMessage появилось
public function parserText($a, &$infoMessage) {<br/>
...<br/>
Какие можете ещё посоветовать достойные решения этой проблемы?
public function parserText($a) {<br/>
...<br/>
return $b<br/>
}public function parserText($a, &$infoMessage) {<br/>
...<br/>
Различия между классом и объектом?
К своему стыду, внезапно, осознал, что не понимаю разницы между классом и объектом.
Т.е. чисто теоретически понимаю, что объект это экземпляр класса, т.е. класс это как бы заготовка, а уже объект это уже «вещь», с которой можно непосредственно работать.
Но тогда почему (если рассматривать вопрос в PHP), я все-таки могу работать с методами класса ( ClassName::MethodName() ), так же как и с методами объекта ( $c = new ClassName; $c->MethodName() ), хотя, в первом случае никакого объекта не создано.
Или, в данном случае, класс это просто как бы группа глобальных функций в своём «пространстве имен», которые не требуют «персонализации» путем задания уникальных значений их свойств?
Поиск в гугле почему-то не помог, в основном приводятся аналогии вида «Класс — чертежи машины, объект — сама машина», но ни слова о практическом применении.
Заранее благодарен за разъяснения, а то сия каша в голове уже начинает напрягать =)
Подскажите простую CMS на PHP
Что нужно:
1) Один или несколько файлов шаблона
2) Файловая система контента, никакой админки, просто подстановка контента в нужные места шаблонов
Спасибо :)
Книги по синтаксису php для опытного программиста на других языках
Насоветуйте книжек, для опытных программистов. Т.е. я не хочу пол книги читать то зачем нужен фор, что такое итератор, чем класс отличается от объекта и прочие одинаковые во всех языках вещи, и особенно про принципы ООП, это сейчас в каждой книге любят написать. Имеется 4 года опыта программирования на C++ и пол года на as3. Собственно с php и так работаю по мелочи, в принципе всё обычно и понятно, за исключением некоторых моментов. Хочется книгу которая не будет рассказывать зачем мне цикл, а расскажет как работает итератор в foreach и что он работает с копиями объектов а не со ссылками на них(меня это сильно удивило, я в foreach устанавливал объекту свойство а на выходе ничего нет). И прочие тонкости. Например когда объекты удаляются. Когда происходят лишние копирования и как их избежать.
Обработка фрейма на php?
На сайте имеется фрейм, в котором загружается другой сайт, дизайн которого нужно подогнать под существующий сайт.
Возможно ли изменение html во фрейме средствами php, и если да, то каким образом?
Текст с тенью в php?
Можно ли сгенирировать картинку на которой будет текст с тенью и объемом?
Пример:
PHP Web IDE
Возникла необходимость использования PHP IDE с веб-интерфейсом. В принципе, подошел бы просто редактор файлов с подсветкой.
Гугление подсказало идеальный сервис — phpanywhere.net/ — но нет уверенности в его безопасности.
Подскажите, пожалуйста, есть ли подобные решения с возможностью установить код на своем сервере?
[Решено] PHP и потеря сессии при session_regenerate_id()
Если кратко, берем код:
<?php
session_start();
if (!isset($_SESSION['a']))
{
$_SESSION['a'] = 0;
}
ob_start();
print $_SESSION['a'];
$_SESSION['a']++;
session_regenerate_id(true);
?>
Открываем в firefox, обновляем страницу несколько раз. Счетчик растет.
Зажимаем Ctrl-R и видим, что потеряли сессию.
Пример несколько синтетический, но часто подобный эффект проявляется при нормальной работе с приложением. Суть в том, что идентификатор сессии изменился, а куку браузер не успел (или не захотел) принять.
Лечится?
Использование реестра через wrapper без синглтона в PHP?
Насколько уместно использование подобной конструкции для использования реестра:
$___REGISTER = (object) array(); // Создаем StdClass для работы с массивом как с объектом
function &Reg()
{
return $GLOBALS['___REGISTER'];
}
// Применение
Reg()->config = (object) array();
Reg()->config->host = 'habrahabr.ru';
Reg()->config->admin = 'admin@habrahabr.ru';
Reg()->config->name = 'Хабрахабр';
// ... и т.д. и т.п.
Использую для замены:
Register::set('config', array(/*... */));
$config = Register::get('config');
Какие подводные камни могут быть при использовании такой обертки? Использовали бы вы такой враппер в своих проектах? Где его 100% не нужно использовать?
$___REGISTER = (object) array(); // Создаем StdClass для работы с массивом как с объектом
function &Reg()
{
return $GLOBALS['___REGISTER'];
}
// Применение
Reg()->config = (object) array();
Reg()->config->host = 'habrahabr.ru';
Reg()->config->admin = 'admin@habrahabr.ru';
Reg()->config->name = 'Хабрахабр';
// ... и т.д. и т.п.Register::set('config', array(/*... */));
$config = Register::get('config');
Что использовать в качестве соли для md5?
В cms используется автоматическое создание превью изображений.
Для этого в mod_rewrite настроено правило, по которому запрос к несуществующей картинке, например image.100x100.jpg, перенаправляется на скрипт, создающий превью изображения image.jpg размером 100x100.
Для того, чтобы злоумышленник не мог самостоятельно вызвать создание любого превью, в этот скрипт передается так же некий токен, который является md5(имя файла + соль).
Суть проблемы в выборе соли, а именно:
Не хочется просить пользователя придумывать соль при установке cms.
Не хочется автоматически генерировать соль при установке, так как не все пользуются установщиком, таким образом соль у многих будет одинаковая, чего допускать нельзя.
Вообще, не очень хочется где-либо хранить её.
Хочется просто «на лету» брать в качестве соли некие данные, которые уникальны для каждой копии скрипта и неизвестны злоумышленнику.
Например, время последней модификации какого-то файла подошло бы, если бы не подбиралось так легко.
Так же подошло бы просто имя домена, на котором работает скрипт, но оно известно злоумышленнику.
Ну и, очевидно, соль не должна меняться со временем, по крайней мере какое-то достаточно длительное время
UPD: похоже darkslesh указал верный путь — хранить в настройках соль(как просто случайное число)+домен, для которого она создана, и при несовпадении домена в настройках с реальным доменом, перегенерировать соль.
Посоветуйте PHP IDE под Linux, написанную не на Java
Посоветуйте PHP IDE под Linux, написанную не на Java.
Спасибо.
Solaris, php5: rmdir: Invalid argument [solved]?
Код:

Вывод:

random@random.net.ua:~$ uname -a
SunOS random.net.ua 5.10 Generic_142910-17 i86pc i386 i86pc
random@random.net.ua:~$ /opt/csw/php5/bin/php -v
PHP 5.2.9 (cli) (built: May 6 2009 21:48:48)
Copyright © 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright © 1998-2009 Zend Technologies
random@random.net.ua:~$ cat /opt/csw/php5/lib/php.ini | grep open_base
; open_basedir, if set, limits all file operations to the defined directory
;open_basedir =
random@random.net.ua:~$ cat /opt/csw/php5/lib/php.ini | grep safe_mode
safe_mode = Off
; then turn on safe_mode_gid.
safe_mode_gid = Off
Есть идеи?
UPD: solved: www.zenphoto.org/trac/ticket/1838#comment:4
Zend Guard, php 5.3.5?
Имею систему Debian Squeeze, php5.3.5 (из dotdeb), имею сайт который закодирован Zend'ом, сайт жил на хостинге с php 5.2.x и Zend Optimizer, сейчас пробую его перенести на дедик, с установленным Zend Guardom (я так понял он заменяет Zend Optimizer). Но сайт не запускается, в error.log ничего не пишет, выдает "500 Internal Server Error". В чем может быть проблема?
в phpinfo() показывает что Zend Guard подключен.
This program makes use of the Zend Scripting Language Engine:<br/>
Zend Engine v2.3.0, Copyright © 1998-2010 Zend Technologies<br/>
with Zend Guard Loader v3.3, Copyright © 1998-2010, by Zend Technologies<br/>
with Suhosin v0.9.32.1, Copyright © 2007-2010, by SektionEins GmbH<br/>
...<br/>
Zend Guard Loader:<br/>
Zend Guard Loader enabled<br/>
License Path no value<br/>
Obfuscation level 3 <br/>
В php.ini писал так:
zend_extension = /full/path/to/ZendGuardLoader.so<br/>
; Enables loading encoded scripts. The default value is On<br/>
zend_loader.enable=1
This program makes use of the Zend Scripting Language Engine:<br/>
Zend Engine v2.3.0, Copyright © 1998-2010 Zend Technologies<br/>
with Zend Guard Loader v3.3, Copyright © 1998-2010, by Zend Technologies<br/>
with Suhosin v0.9.32.1, Copyright © 2007-2010, by SektionEins GmbH<br/>
...<br/>
Zend Guard Loader:<br/>
Zend Guard Loader enabled<br/>
License Path no value<br/>
Obfuscation level 3 <br/>zend_extension = /full/path/to/ZendGuardLoader.so<br/>
; Enables loading encoded scripts. The default value is On<br/>
zend_loader.enable=1
Как авторизоваться на novafilm.tv при помощи cURL?
Что то я тут затупил на тему передаваемых данных.
Если на других трекерах достаточно постом передать лог/пасс и нажатие на кнопку
curl_setopt($ch, CURLOPT_POSTFIELDS, «FormLogin={$log}&FormPassword={$pass}&act=login»);
и всё работает, то тут я так понимаю всё передаётся в заголовках, но судя по логам помимо log, pass ещё куча каких то данных передаётся:
-----------------------------14042802788933518161505795335
Content-Disposition: form-data; name=\«return\»
/
-----------------------------14042802788933518161505795335
Content-Disposition: form-data; name=\«username\»
{$log}
-----------------------------14042802788933518161505795335
Content-Disposition: form-data; name=\«password\»
{$pass}
-----------------------------14042802788933518161505795335
Content-Disposition: form-data; name=\«login\»
???????? ??????????!
-----------------------------14042802788933518161505795335--
что то вообще такое? Попробовал в таком виде заголовок отправить — сервер ничего не возвращает, если не слать — вываливается форма авторизации соответственно. Может кто уже писал авторизацию под нову и подскажет или просто умную мысль подкинет?
PHP интерпретатор не понимает index.php
Если ввести адрес как www.site.ru/index.php — сервер отрабатывает и показывает скрипт, если же ввести без явного указания файла www.site.ru — апач мне выплёвывает индексный файл без обработки.
Подскажите пожалуйста, что это за чудеса и как это вылечить?
ubuntu 10.04
php 5.3 (mod_fcgid), apache2
Наследование свойств PHP?
Добрый вечер! Сразу оговорюсь что я в ООП начинающей. Столкнулся с такой проблемой:
Класс a
class a {<br/>
<br/>
var $boby;<br/>
<br/>
$b = new b();<br/>
<br/>
}<br/>
Класс b наследник а
class b extends a {<br/>
<br/>
$this->boby="Текст";<br/>
<br/>
}<br/>
Все это подключаю к файлу a.php
<?php<br/>
$a= new a(); <br/>
?><br/>
<br/>
<?php echo $a->body; ?><br/>
<br/>
Если свойство задать в классе a то оно выводится, а если его определить в классе b то оно не выводится.
Как это побороть подскажите.
class a {<br/>
<br/>
var $boby;<br/>
<br/>
$b = new b();<br/>
<br/>
}<br/>class b extends a {<br/>
<br/>
$this->boby="Текст";<br/>
<br/>
}<br/><?php<br/>
$a= new a(); <br/>
?><br/>
<br/>
<?php echo $a->body; ?><br/>
<br/>
Информация по паукам (crawler, синтаксический анализатор) в PHP?
Здравствуйте.
Возникла передо мной задача написать парсер контента сторонних сайтов на php. Идеология работы этого модуля следующая:
— администратор задает правила парсинга конкретного сайта (страницы), присваивая определенным селекторам (тегам) веса;
— модель парсит сайт (страницу);
— полученный после парсинга результат мы анализируем, применяя к нему правила, введеные администратором. На выходу мы должны получить контекст страницы вида array('word1'=>int(...), 'word2'=>int(...)...). Здесь word1 — это слово, выделенное пауком со страницы, а int(...) — это вес содержимого, полученный после применения к результату парсинга правил администратора. Т.о. мы можем получить примерный контест страницы, т.е. система получит представление о выжимке содержимого с анализируемого ресурса.
Парсинг контента — это не проблема. Можно использовать нативный DomDocument — XPath (быстро по скорости, но затратно по созданию и поддержке), Zend_Dom_Query илиphpQuery или Нокогири(тема) хабраюзера w999d — медленнее по скорости, зато проще по написанию, хорошие возможности для парсинга. (Если кто-то знает хорошие библиотеки для парсинга, не указанные мной, — подскажите.)
Так вот, сам вопрос, каким образом организовать анализ и разбор содержимого на странице, чтобы на выходе получить некую выжимку, контекст содержимого (сайты для парсинга будут разнообразные по структуре и содержанию). Есть ли открытые решения (open-source crawlers), которые бы эффективно анализировали страницу? Может быть вы подскажите информацию по построению поискового индекса?
Прошу прощения за несколько расплывчатое изложение вопроса, спасибо за внимание!
Кэширование данных до запроса в PHP
Проблема: К базе данных происходит около 200 однотипных запросов, но одинаковых нет, каждый раз меняется по одному параметру, поэтому кэширование результата тут не подходит.
Я заранее знаю диапазон записей к которым происходит запрос, поэтому родилась такая идея — выбрать все эти данные заранее и вместо запроса уже перебирать данные в массивы.
Писать этот механизм руками неохота, скорее всего должны быть уже готовые решения, собственно и вопрос — кто-нибудь знает про что то подобное?
Слышал что в .net есть подобная штука — DataTable называется.
PHP + DB4
Для одного высоконагруженного проекта используется PHP-модуль DB4 для хранения всех данных. Версия PHP 5.2.3.
Возникают постоянные проблемы «поломки» файлов базы, когда в неё становится невозможно что-то записать, приходится пересоздавать файл базы и перезаписывать в него данные.
Также есть другие проблемы — например, в модуле не реализована блокировка файлов при записи поэтому иногда возникают ситуации с потерей данных.
Нужно поменять базу данных, но подходящих вариантов я так и не нашел. Пробовал перейти на MongoDB, но есть две проблемы — невозможность использовать точки в ключе и невозможность писать текст в не-utf кодировке. Также изучался tokyo tyrant, но не подходит его структура, нужна древовидная структура или хотя бы БД-Контейнер как в MongoDB.
Нашел упоминание о BDB 5, начиная с версии PHP 5.3.3. Но информации о том, что это за зверь такой и решены ли в нем проблемы DB4 я не нашел.
Что посоветуете?
PHP Controls
Изучая ASP.NET я был ошеломлен контролами, которые на основе базы данных строят и таблицу, и формы для добавления/удаления/редактирования, а так же сами «пришивают» AJAX по запросу в два клика мышкой.
Меня интересует есть-ли аналоги для PHP? Которые на основе базы данных (MySQL) нарисуют и таблицу, и формы.
За ранее спасибо за ответ!
Какие методы vk api доступны с php
Делаю open api приложение, использую класс vkontakte.ru/source/APIServerPHPClass.zip
Как оказалось основная часть методов не доступна.
Так работает:
<?
require 'vkapi.class.php';
$api_id = 1234; // Insert here id of your application
$secret_key = ' your secret key '; // Insert here secret key of your application
$VK = new vkapi($api_id, $secret_key);
$resp = $VK->api('getProfiles', array('uids'=>'1,6492'));
print_r($resp);
?>
Так нет:
<?php
require 'vkapi.class.php';
$api_id = id приложения; // Insert here id of your application
$secret_key = 'ключ'; // Insert here secret key of your application
$VK = new vkapi($api_id, $secret_key);
$resp = $VK->api('photos.getAlbums', array('uid'=>'id пользователя'));
print_r($resp);
?>
Вопрос: где можно конкретно прочитать какие методы досутпны, какие нет?
Или я что-то делаю не так?
require 'vkapi.class.php';
$api_id = 1234; // Insert here id of your application
$secret_key = ' your secret key '; // Insert here secret key of your application
$VK = new vkapi($api_id, $secret_key);
$resp = $VK->api('getProfiles', array('uids'=>'1,6492'));
print_r($resp);
?>
require 'vkapi.class.php';
$api_id = id приложения; // Insert here id of your application
$secret_key = 'ключ'; // Insert here secret key of your application
$VK = new vkapi($api_id, $secret_key);
$resp = $VK->api('photos.getAlbums', array('uid'=>'id пользователя'));
print_r($resp);
?>
PhpStorm 2.0 + XDebug
Приветствую!
Помогите с настройкой PhpStorm 2.0 с XDebug (denwer). А то как-то странно он работает у меня, то дебажится, то нет.
Я захожу в Debug Configuration, добавляю новую PHP WebApplication.
Далее Configuration — Server — добавляю новый:
Host: localhost
Port: 9000
Debugger: XDebug
Use path mappings: no
Нажимаю debug — открывается браузер site.com/?XDEBUG_SESSION_START=18872
PhpStorm пишет только Waiting for incoming connection with ide key '18872' и все.
php.ini:
[xdebug]
zend_extension=\usr\local\php5\ext\php_xdebug-2.1.0-5.3-vc6.dll
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=«dbg
Заранее спасибо!
Почему трудно найти PHP программистов в Казани?
Уже месяц ищем двух PHP программистов, вроде и требования не очень жесткие, и з\п вроде нормальная — нет почти никого.
Зарплата от 20 до 45 тысяч, в зависимости от знаний.
Где вообще можно найти нормальных PHP программистов??
PHP — как сделать толковый кэш?
Задача
Есть сайт — новостная лента. Двиг — самописный, PHP + MySQL. В данный момент с каждым посещением страницы информация формируется из БД.
Срочно надо перейти с динамики на статику.
То, как я придумал это сделать
- При первом посещении странички c id=1500 — содержимое берется из БД и записывается в файл cache/1500.html. Делается с помощью ob_start().
- При повторном посещении этой странички — смотрим дату создания файла 1500.html, если дата меньше 15 минут от тек. времени, инклудом выводим 1500.html. Если больше 15 минут — снова берем из БД и перезаписываем файл.
Вопросы
1. Комментарии к новостям. Получается, при добавлении нового комментария необходимо будет убивать файл 1500.html? Сайт живой, комментов много. Вот не знаю, я хард не задолбаю такими запросами?
2. Статистика количества просмотров новости. При каждом посещении продолжать делать «UPDATE `views` = `views` + 1» или может есть какое-то другое решение? А то выходит не до конца статика получится, если будут постоянно запросы в БД улетать.
Поделитесь, пожалуйста, мыслями по поводу такой реализации. Может кто-то уже внедрял что-то подобное, какие могут возникнуть проблемы? Может сущетсвуют подводные камни, о которых я пока не подозреваю?
DDoS — как уменьшить нагрузку на php?
Задача
Недавно спрашивал о настройке кеша на php. Нужно это было, чтоб уменьшить нагрузку на MySQL, т.к. идет DDoS на сайте (по 40к коннектов за раз).
На скорую руку сделал этот кэш. При первом заходе на страничку c ID = 1500 — берет её из БД, кидает копию страницы на хард под именем 1500.html. Сверху в коде стоит проверка — если существует файл 1500.html, делает
include('cache/ID.html');
die();
Нагрузка на MySQL дейтвительно упала, но теперь в топе куча процессов php-cgi с большим процентом нагрузки. Соответственно, сайт лежит.
P.S. Фильтрами на уровне ОС от ддос отбиться не получается. Какой-то там хитрый ддос.
Вопрос
Я так понимаю, php парсит index.php и отсюда идет нагрузка. Может я как-то не так разместил проверку на существование файла 1500.html?
Как лучше сделать, чтоб при наличии кеша странички на харде была минимальная нагрузка на php?
die();
Формирование кода видео Вконтакте
Нужно автоматически формировать из ссылки на видео:
vkontakte.ru/video-15228195_139953350
код iframe с видео вконаткте:
<iframe src="http://vkontakte.ru/video_ext.php?oid=-15228195&id=139953350&hash=9fbf1b10f49ace31" width="607" height="360" frameborder="0"></iframe>
Непонятно как формируется параметр hash, api vkontakte.ru/developers.php?o=-1&p=video.get тоже не предоставляет код плеера.
<iframe src="http://vkontakte.ru/video_ext.php?oid=-15228195&id=139953350&hash=9fbf1b10f49ace31" width="607" height="360" frameborder="0"></iframe>
