LINUX.ORG.RU

Сообщения solovey

 

Digest Authentication с помощью libvlc

Форум — Development

Привет, ЛОР!

У меня есть видеосервер с авторизацией через Digest Authentication. Он отдает видео по ссылкам вида http://127.0.0.1:9786/cameras/0/video.

Если я эту ссылку подсовываю в VLC, то у меня вылезает окно ввода логина/пароля, и после ввода логина пароля видео с камеры наблюдения воспроизводится.

Но меня интересует отображение видео в своем приложении. Соответственно, вопрос в том, как реализовать аутентификацию с помощью libvlc?

Пока что я нашел файл include/vlc/plugins/vlc_http.h в котором, как я понял, есть функции для создания всех необходимых заголовков, но как их передавать непосредственно видеосерверу?

Буду благодарен за пример кода или за ссылку на то, где про это можно почитать!

Я пока только начал ковырять libvlc, есть минимально работающий код, который воспроизводит видео с другого видеосервера без аутентификациии:

...
#include <vlc/vlc.h>
...
libvlc_instance_t * inst;
libvlc_media_player_t *mp;
libvlc_media_t *m;

const char * const vlc_args[] = {
		  "--live-caching=100",
		  "--network-caching=100"
              };

/* Load the VLC engine */
inst = libvlc_new (sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);

/* Как добавить сюда аутентификацию??? */

/* Create a new item */
m = libvlc_media_new_location (inst, "http://127.0.0.1:8080/video?login=root&password=c4ca4238a0b923820dcc509a6f75849b&channelid=71bb90d9-6d65-4807-9914-108b7e6b38e5");

/* Create a media player playing environement */
mp = libvlc_media_player_new_from_media (m);

/* No need to keep the media now */
libvlc_media_release (m);

/* play the media_player */
libvlc_media_player_play (mp);

...

 ,

solovey ()

Клавиатура + встраиваемое приложение на qt embedded

Форум — Development

Всем доброго времени суток.

Есть у меня железка на арме. Я запилил на нее Qt, прикрутил тачскрин и написал приложение с интерфейсом на кутях.

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

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

Но надо автоматизировать процесс, поэтому засовываем приложение в автозапуск (по простому - по крону на @reboot). Теперь все работает ровно до тех пор, пока мы не нажмем любую клавишу на клавиатуре. После этого весь интерфейс зависает, да и само приложение перестает что-либо делать...

Такая же ситуация наблюдается, если запилить автологин на tty1 и добавить в .profile запуск своего приложения.

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

...
# export needed variables
export TSLIB_PLUGINDIR=/lib/ts/
export TSLIB_TSDEVICE=/dev/ep93xx_ts
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO=tslib:/dev/ep93xx_ts
export QWS_KEYBOARD=TTY:/dev/tty0

# start app here
...

Собственно, вопрос: как заставить клавиатуру корректно работать?

P.S.: Когда-то давно я уже создавал подобную тему, поэтому кастую сюда velikS :)

 , ,

solovey ()

ifup применяет некорректные настройки сети

Форум — General

Всем доброго времени суток.

Небольшая предистория. Есть одноплатный компьютер на котором работает emdebian.

Внутри крутится демон на с++, который, помимо основных задач, анализирует состояние перемычек на плате. Если замкнута перемычка, отвечающая за сброс ip адреса, демон запускает скрипт следующего содержания:

#!/bin/bash

defaultfile="/etc/network/interfaces.save"
targetfile="/etc/network/interfaces"

if [ -f ${defaultfile} ]; then
        ifdown eth0 --force
        cp ${defaultfile} ${targetfile}
        ifup eth0 --force
        echo "Network settings restored!"
else
        echo "Could not restore network settings!"
fi

Содержимое файла /etc/network/interfaces.save:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0

Я ожидаю, что после выполнения этого скрипта параметры сети изменятся на указанные выше. На деле параметры сети не меняются.

Мой демон, который анализирует перемычки, запускается при старте одноплатника по крону с параметром @reboot:

@reboot /var/www/webdaemon/webscript.sh 2>&1 >> /dev/null &

После него стартует только apache2.

Собственно, вопрос - как мне сделать так, чтобы настройки сети реально изменились?

 ,

solovey ()

Инструменты для создания контрольных точек (checkpoints)

Форум — General

Собственно, сабж.

В универе в рамках курса по разработке качественного ПО есть задание - найти инструмент, позволяющий создавать контрольные точки для приложений.

Нашел сайт http://checkpointing.org/, но там половина проектов - протухшие... Наиболее интересным оттуда показался DMTCP (последний релиз был вчера!). Но при попытке запустить его для моего Qt приложения под xubuntu 12.04, он ругнулся на то, что не смог "подцепиться" к X-серверу...

Собственно, может кто-нибудь сможет посоветовать еще какие-нибудь инструменты?

Ну и (не флейма ради, а вообще интересно), такие инструменты кто-нибудь реально использует при разработке и отладке приложений?

upd: Под контрольными точками я подразумеваю не системы контроля версий, а возможность сохранить ("заморозить") состояние программы и затем продолжить ее выполнение из сохраненного состояния.

solovey ()

Embedded + Qt - не работает клавиатура

Форум — Development

Всем доброго времени суток.

Есть embedded машина на arm, у нее есть экран и usb-клавиатура.

Если с помощью клавиатуры залогиниться на машину (консоль выводится на экран) как root и запустить Qt-шное приложение через

# ./app -qws
то клавиатура работает.

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

Возможно вопрос не совсем в Development, но я помню, что здесь обитают люди, успешно запускавшие Qt-шные приложения на embedded девайсах.

P.S.: К слову, такая же ситуация наблюдается, если запускать приложение через отладочную консоль, подключенную через rs232 к хост-компьютеру. При этом в последнем случае пользователь уже роли не играет (то есть, клавиатура не работает всегда).

 , ,

solovey ()

Нужен годный мануал по libusb-1.0

Форум — Development

Всем доброго времени суток.

Раньше опыта работы с libusb не имел, а документация не особо впечатляет...

Интересует сам «алгоритм» взаимодействия, желательно с примерами...

Пока что понял только, как получить нужный мне libusb_device_handle, но что с ним делать дальше - не понятно.

Гугл не выдал ничего интересного, так что буду благодарен за помощь!

 

solovey ()

QPrinter + QPainter динамическое формирование документа

Форум — Development

Всем доброго времени суток.

Пишу приложение на Qt, которое кроме всего прочего должно печатать талоны со штрих-кодами.

Для этого использую термопринтер.

В настройках принтера делаю следующее:

pPrinter->setOrientation (QPrinter::Portrait);
pPrinter->setColorMode (QPrinter::GrayScale);
pPrinter->setPageSize (QPrinter::A7);
pPrinter->setFullPage (true);

Размер бумаги A7 - 74х105 мм (т.к. термопринтер печатает на бумаге 80х120 мм).

Есть QWidget, из которого я и печатаю данные:

void Printer::draw(QPaintDevice *ppd, const QString &info, const QString &ticketStr) {
	QPainter painter(ppd);
        QRect r(painter.viewport());
	
	painter.setPen(Qt::black);
	painter.setFont (QFont ("Helvetica", 10, QFont::Normal));
	painter.drawText (r, Qt::AlignLeft | Qt::AlignTop | Qt::TextWrapAnywhere, info);
	
	QString barcode = strToCode128 (ticketStr);
	
	painter.setFont (QFont ("Code 128", 50, QFont::Normal));
	painter.drawText (r, Qt::AlignHCenter | Qt::AlignBottom, barcode);
}

Когда я задаю положение элементов через флаги Qt (как это сделано выше), содержимое виджета масштабируется под размер страницы (A7) и нормально печатается.

Однако мне бы хотелось форматировать страницу чуть более гибко. Пытаюсь задать координаты какого-либо элемента в процентах от размера r:

QPoint p (r.height ()*0.9, r.width ()*0.2);
painter.drawText (p, barcode);
При этом элемент просто не отображается.

P.S.: Еще меня смущает то, что размер r = QRect(0,0 3500x4967)

 , ,

solovey ()

CUPS принтер не поддерживает ни один формат

Форум — General

Всем доброго времени суток.

У меня есть плата с emdebian.

Задача - подцепить на нее принтер и печатать некоторые данные из приложения на Qt.

Принтер тоже не простой, а термопринтер для печати чеков CUSTOM VKP-80 II (http://www.custom-printer.ru/ru/CustomVKP-80II/ - вот, если кому интересно).

Для него удалось найти ppd файл, «драйвер» под линукс под названием rastertoVKP80 и скрипт установки драйвера и ppd файла.

На рабочей машине с debian squeeze после того, как отработал скрипт, принтер определился через cups. Мне удалось его настроить и печатать с него все, что надо.

Теперь я пытаюсь заставить его работать на моей плате с emdebian.

Для начала я установил там cups:

apt-get install cups cups-client

Потом точно также запустил скрипт и настроил принтер через cups.

Вроде бы, все отработало успешно. Но когда я пытаюсь напечатать любой документ, в консоль плюются следующие ошибки:

lp: Unsupported format 'text/plain'!
или
lp: Unsupported format 'application/pdf'!

Читал, что некоторым помогает переустановка ghostscript. Мне не помогло.

Не знаю, в чем может быть проблема. Версия CUPS на хосте и на плате - 1.4.4.

Буду признателен за помощь.

upd: забыл уточнить, если просто из консоли сделать

echo "bla-bla-bla" > /dev/usb/lp0
то текст печатается

 ,

solovey ()

Qt, грамотное разделение на потоки

Форум — Development

Всем доброго времени суток.

Пишу приложение с интерфейсом на Qt, общающееся с контроллером.

Возникла такая ситуация - при поднесении карты к считывателю необходимо отправить контроллеру команду, а также вывести сообщение в интерфейс. Делаю это так:

// проверка условий
...
// отправляем сигнал интерфейсу
emit signalSendInfoMsg (MSG_USR_WRONG_TIME);
// формируем и отсылаем команду контроллеру
controller.denyOpenGate (evcode, card);
...
Сейчас это работает так: сначала контроллер получает и выполняет команду, а затем выводится сообщение в интерфейс... А нужно, чтобы сообщение выводилось еще до выполнения команды и висело, пока она выполняется!

Сразу нашел у себя косяк в том, что приведенный выше код работал в том же потоке, что и интерфейс. Вынес этот класс в отдельный поток, как написано здесь - не помогло.

Буду признателен за идеи.

 ,

solovey ()

отключить прокруткку по нажатию стрелок

Форум — Web-development

Всем доброго времени суток.

Возникла задача отключить стандартное поведение клавиш со стрелками вверх/вниз, обеспечивающих прокрутку страницы.

Пробовал гуглить - нашел только похожее решение для события прокрутки колесика мыши:

if (elem.addEventListener) {
	 // IE9+, Opera, Chrome/Safari
	 elem.addEventListener ("mousewheel", onMouseWheel, false);
	 // Firefox
	 elem.addEventListener ("DOMMouseScroll", onMouseWheel, false);
} else { // IE<9
	 elem.attachEvent ("onmousewheel", onMouseWheel);
}
		
function onMouseWheel(e) {
	e = e || event;
	// отменить действие по умолчанию (прокрутку элемента/страницы)
	e.preventDefault ? e.preventDefault() : (e.returnValue = false);
}

Собственно, вопрос - как провернуть то же со стрелками? Пробовал вместо onmousewheel/других обработчиков воткнуть onkeypress или onkeydown - не работает...

 

solovey ()

Qt Embedded работа с com-портом

Форум — Development

Всем доброго времени суток.

Есть девайс на arm, под который я пишу приложение на Qt. Разрабатываю и тестирую сначала на хосте, потом кросс-компилирую и заливаю на плату. Пока писал гуй, все прекрасно работало.

Сейчас возникла необходимость реализовать работу с com-портом. Сначала для этих целей взял QextSerialPort. На компе все завелось и общение через com-порт (с помощью конвертера usb-rs232) идет нормально. Попробовал кросс-компилировать на плату - ничего не работает.

Стал грешить на то, что криво собрал QextSerialPort. Попробовал использовать вместо него обычные системные вызовы linux. Резальтат тот-же. На компе через конвертер все работает, а после того, как кросс-компилирую для платы - нет.

Более того, на проблемы с компилятором это также не похоже, т.к. если написать чистый сишный код работы с com-портом и откомпилировать его из консоли (arm-linux-gnueabi-gcc file.c -o file...), то все работает...

Инициализирую порт так:

int comInit (const char *name) {
	int baud;
	struct termios opt;
	
	int fd = open (name, O_RDWR | O_NOCTTY);
	if (fd < 0) {
		perror ("open");
		return fd;
	}
	fsync (fd);
	tcflush (fd, TCIOFLUSH);
	bzero (&opt, sizeof (opt));
	opt.c_cflag |= (CREAD | CLOCAL);
	opt.c_cflag &= ~PARENB;
        opt.c_cflag &= ~CSTOPB;
	opt.c_cflag &= ~CSIZE;
	opt.c_cflag |= CS8;
	opt.c_cflag &= ~CBAUD;
	opt.c_cflag |= B115200;
	opt.c_cc[VMIN] = 0;
	opt.c_cc[VTIME] = 0;
	
	baud = B115200;
	
	cfsetispeed (&opt, baud);
	cfsetospeed (&opt, baud);
	
	tcsetattr (fd, TCSANOW, &opt);
	
	return fd;
}

Как уже говорил, если просто скомпилировать это как сишный файлик, то все работает. Если же подсунуть этот кусок в проект на Qt, то попытки передачи данных в порт ведутся (если верить логам), но ответ мне так и не прочитать.

Возможно, кто-нибудь сталкивался с подобной проблемой. Буду признателен за любые конструктивные идеи.

upd: Если набросать простую тестовую программку на Си, которая бы открывала порт, писала туда что-то и считывала ответ, то тоже ничего не работает. Но полноценный проект, написанный на Си и собранный тем же компилятором, успешно использует com-порт. Код инициализации порта выдран как-раз из этого проекта...

 , ,

solovey ()

udisks mount error

Форум — General

Всем доброго времени суток.

При попытке примонтировать флешку с помощью udisks вижу следующее:

ep9315:~# udisks --mount /dev/sdb1
Mount failed: Not Authorized: Remote Exception invoking org.freedesktop.PolicyKit1.Authority.CheckAuthorization() on /org/freedesktop/PolicyKit1/Authority at name org.freedesktop.PolicyKit1: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.PolicyKit1 was not provided by any .service files

Ситуация осложняется тем, что все происходит на одноплатнике на базе arm, где в качестве ОС используется emdebian.

Ради интереса сравнил файлы org.freedesktop.udisks.policy с одноплатника и с рабочей машины с debian squeeze - они одинаковые. При этом на компе все работает...

Есть какие-нибудь предположения? Пробовал нагуглить, но ничего толком не нашел.

Заранее спасибо

 , ,

solovey ()

Редактировать системный файл без запроса пароля

Форум — General

Всем доброго времени суток.

Собственно, сабж.

Необходимо разрешить пользователю редактирование /etc/network/interfaces без запроса пароля.

Пользователь запускает скрипт, в котором данные записываются через

echo $data >> /etc/network/interfaces

Знаю, что можно просто разрешить в sudoers запуск этого скрипта без пароля, но в sudoers надо прописать полный путь к этому скрипту, а предполагается, что его «местоположение» может меняться...

Есть какие-нибудь красивые варианты решения поставленной задачи?

Заранее спасибо!

solovey ()

Qt valgrind memleak

Форум — Development

Всем доброго времени суток.

Есть проект на Qt. При запуске анализатора памяти valgrind из Qt Creator вываливается вот такая ошибка:

240,332 (156 direct, 240,176 indirect) bytes in 1 blocks are definitely lost in loss record 5,921 of 5,921
  в MyClock::MyClock(QLabel*) в myclock.cpp:4
  1: operator new(unsigned int) в /tmp/buildd/valgrind-3.6.0~svn11254+nmu1/coregrind/m_replacemalloc/vg_replace_malloc.c:255
  2: /home/ivan/QtSDK/Desktop/Qt/4.8.1/gcc/lib/libQtGui.so.4.8.1
  3: QFontDatabase::load(QFontPrivate const*, int) в /home/ivan/QtSDK/Desktop/Qt/4.8.1/gcc/lib/libQtGui.so.4.8.1
  4: QFontPrivate::engineForScript(int) const в /home/ivan/QtSDK/Desktop/Qt/4.8.1/gcc/lib/libQtGui.so.4.8.1
  5: QFontInfo::pointSize() const в /home/ivan/QtSDK/Desktop/Qt/4.8.1/gcc/lib/libQtGui.so.4.8.1
  6: MyClock::MyClock(QLabel*) в myclock.cpp:4
  7: MainWindow::initMainWgt() в mainwindow.cpp:25
  8: MainWindow::MainWindow(QWidget*, QFlags&lt;Qt::WindowType&gt;) в mainwindow.cpp:9
  9: main в main.cpp:16

Код класса MyClock, на который он ругается:

myclock.h

#ifndef MYCLOCK_H
#define MYCLOCK_H

#include <QDateTime>
#include <QLabel>
#include <QTimer>

class MyClock : public QLabel
{
private:
	QDateTime timestamp;

protected:
	virtual void timerEvent (QTimerEvent *);
	
public:
	explicit MyClock(QLabel *parent = 0);
	void showTime ();

};

#endif // MYCLOCK_H

myclock.cpp

#include "myclock.h"

MyClock::MyClock(QLabel *parent) : QLabel(parent) {
	setMaximumHeight (fontInfo ().pointSize ()*2); // вот здесь ругается
	showTime ();
	startTimer (1000);
}

void MyClock::showTime() {
	timestamp = QDateTime::currentDateTime ();
	setText (tr ("Текущее время: ") + timestamp.toString ("dd.MM.yyyy hh:mm:ss"));
}

void MyClock::timerEvent(QTimerEvent *) {
	showTime ();
}

Что-то я смотрю-смотрю, и не могу увидеть, где здесь утечка памяти =(

Буду признателен за помощь.

 ,

solovey ()

qt4 прочитать русский текст из xml

Форум — Development

Всем доброго времени суток.

Есть такая xml-ка:

<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user id="1">
    <name>Имя на русском</name>
  </user>
</users>

Пытаюсь прочитать ее, используя dom:

#include <QtXml>

int main (int argc, char **argv) {
	QDomDocument domDoc;
	QFile file ("users.xml");	
	if (file.open (QIODevice::ReadOnly)) {
		if (domDoc.setContent (&file)) {
			QDomElement docEl = domDoc.documentElement ();
			QDomNode node = docEl.firstChild ();
			while (!node.isNull ()) {
				qDebug () << node.nodeName ();
				QDomElement el = node.toElement ();
				if (!el.isNull ()) {
					QDomElement name = el.elementsByTagName ("name").at (0).toElement ();
					qDebug () << name.nodeName ();
					qDebug () << name.text ();
				}
				node = node.nextSibling ();
			}
		}
		file.close ();
	}
}

В результате русские символы просто не выводятся.

Не подскажете, как быть? Google ничего точно сказать не смог =(

Заранее спасибо.

P.S.: Хотелось бы использовать именно dom, так как реально структура xml будет сложнее. Это просто тестовый пример.

 ,

solovey ()

QFileDialog::getOpenFileName ограничить выбор одной директорией

Форум — Development

Собственно, сабж.

Можно стандартными средствами сделать так, чтобы файл можно было выбирать только из определенной директории и ее поддиректорий, а подняться «выше» не было бы возможности?

 

solovey ()

javascript странная проверка условий

Форум — Web-development

На JavaScript'e пишу редко. Случайно наткнулся на такую фишку. Хотелось бы понять, почему так.

Есть функция:

function toggleEl (el_id, state) {
	if (state) {
		document.getElementById(el_id).style.display = '';
	} else {
		document.getElementById(el_id).style.display = 'none';
	}
}

Если вторым параметром передавать true или false, то все работает как положено. Но если 1 или 0, то всегда выполняется первая ветка.

При этом alert (0 == false) дает true, то есть, казалось бы, все должно работать корректно.

Не сказать, что мне это сильно мешает, просто несколько неожиданно...

solovey ()

php как заставить скрипт освободить ресурсы?

Форум — Web-development

Выполнялся скрипт, который отожрал 28М оперативки (см. вывод top -u www-data).

Tasks:  39 total,   1 running,  38 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3%us,  3.3%sy,  0.0%ni, 96.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:     61340k total,    58316k used,     3024k free,      300k buffers
Swap:        0k total,        0k used,        0k free,    13068k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
 9158 www-data  15   0 45004  28m 3360 S  0.0 47.7   2:42.41 apache2            
 9159 www-data  15   0 23520 7408 3320 S  0.0 12.1   0:02.35 apache2            
 9160 www-data  15   0 23956 8064 3428 S  0.0 13.1   0:17.80 apache2            
 9172 www-data  18   0 23348 7208 3368 S  0.0 11.8   0:03.59 apache2            
 9275 www-data  18   0 23536 7616 3308 S  0.0 12.4   0:10.60 apache2

Собственно, скрипт выполнен, результаты получены. Как теперь заставить скрипт освободить ресурсы? А то он так и висит в задачах, занимаю кучу оперативки....

Upd: в apache2.conf уменьшил время KeepAliveTimeout - вроде помогло. Это нормальное решение, или костыль?

solovey ()

Навернулась флешка. Как восстановить?

Форум — General

Собственно, сабж.

Флешка внезапно перестала опознаваться. Вывод dmesg | tail:

ivan@debian:~$ dmesg | tail
[   64.746875] Initializing USB Mass Storage driver...
[   64.746958] scsi4 : SCSI emulation for USB Mass Storage devices
[   64.747032] usbcore: registered new interface driver usb-storage
[   64.747034] USB Mass Storage support registered.
[   64.747326] usb-storage: device found at 4
[   64.747328] usb-storage: waiting for device to settle before scanning
[   69.744147] usb-storage: device scan complete
[   69.821640] scsi 4:0:0:0: Direct-Access     Kingston DT Micro         PMAP PQ: 0 ANSI: 0 CCS
[   69.822020] sd 4:0:0:0: Attached scsi generic sg2 type 0
[   69.876121] sd 4:0:0:0: [sdb] Attached SCSI removable disk
Изначально на флешке был один раздел. Он бы определился как /dev/sdb1, а сейчас - только /dev/sdb...

fdisk тоже ничего не видит:

ivan@debian:~$ sudo fdisk -l
[sudo] password for ivan: 

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc8ebc8eb

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       30723   246782466    7  HPFS/NTFS
/dev/sda2           30724       60801   241601535    5  Extended
/dev/sda5           30724       58189   220620613+   7  HPFS/NTFS
/dev/sda6           58190       58432     1951866   82  Linux swap / Solaris
/dev/sda7           58452       60801    18876343+  83  Linux
/dev/sda8           58433       58451      152586   83  Linux

Partition table entries are not in disk order

Информация на флешке не важна. Важно саму флешку оживить. Есть какие-нибудь идеи?

solovey ()

Как считается память, используемая php-скриптом?

Форум — Web-development

Всем доброго времени суток.

Такой вопрос - после небольших изменений в моем скрипте php начал ругаться на то, что я пытаюсь выделить больше память, чем разрешено:

Fatal error: Allowed memory size of 8388608 bytes exhausted

Но если выводить количество используемой памяти через memory_get_usage (true) и memory_get_peak_usage (true), то больше 2 с копейками метров там нет..

В связи с этим вопрос - php суммирует всю выделенную память и следит, чтобы она не превысила установленное значение? Или все-таки у меня реально кривой скрипт?

 ,

solovey ()

RSS подписка на новые темы