Web-серверы Apache и Nginx позволят отдавать файлы на загрузку через скрипт, с помощью специальных заголовков. У Apache это - X-SendFile, у Nginx - X-Accel-Redirect)
Есть сервер c IIS 7.5. Интересует возможность аналогичной реализации, или альтернативные способы отдавать файлы через PHP напрямую.
Предполагается что объём файлов для загрузки будет достигать до 20 Гб!
По совету на одном сайте пробовал ставить в конфиге: user www-data; вместо user nginx;
пробовал менять группу и владельца папки files и test.zip на www-data, nginx, root - ничего не помогает... перезагружал сервер.
Добрый день, уважаемые знатоки. Не уверен, что правильно выбрал раздел для темы, но надеюсь мне помогут.
И так проблема заключается в следующем: POST автоматически экранирует кавычки и из строки "Hello world" мы получаем \"Hello world\" очень полезная финча, но все мои скрипты сами этим занимаются, где и когда нужно. Необходимо отключить это!
Знаю, что за это отвечает magic_quotes_gpc в php.ini
Идём в /etc/php5/apache2/php.ini и увидим там: magic_quotes_gpc = Off
Но! get_magic_quotes_gpc возвращает единичку
Подскажите пожалуйста, где это ещё может быть включено?
История:
Сначала был один класс main, в нём хранилось всё что нужно. Функции для работы с пользователями, БД, шаблонизация, системные и много чего другого. Это очень быстро работает и заморачиваться не нужно, создал обьёкт и всё сразу под рукой. Но! Для разработки это просто "ппц"! функций и переменных стало слишком много, невозможно ориентироваться нормально. Попытка:
Когда это стало напоминать Талмуд - было принято решение разбить класс по функционалу, т.е. создать отдельные классы для работы с БД, Пользователями, Ошибки, Шаблонизация, Системный, Админка и т.д. Последствия:
Но тут начались мощные проблемы, т.к. это всё жёстко завязано друг с другом (функции одних классов необходимо использовать в других классах), начались казусы. Ладно с классом БД (кстати его нужен обязательно один независимый экземпляр), его я протаскиваю в классы через параметр как ссылку и уже внутри использую. Но возмём к примеру класс Ошибок, он используется почти во всех классах, к примеру один экземпляр уже есть в классе БД, при этом БД, используется в Системном классе... Брать функции Ошибок через БД или создавать новый экземпляр?! Это страшно! ))))
Ув. профи, посоветуйте мне что-нибудь. Как покончить с этим кошмаром и выстроить нормальную логику приложения с использованием ООП?
Приветствую вас, уважаемые форумчане!
Решил реализовать ответы на комментарии, на своём сайте. Но как хочется - реализовать не получается! Обращаюсь к вам за помощью.
MySQL: Есть табличка с комментариями tbl_comments. Структура самая простейшая:
| id | user | text | datetime |
на нужных страничках комменты выводятся DESC'ом по дата-тайму (вверху новые комментарии).
Появилась острая необходимость реализовать ответы к ним. т.е. каждое сообщение может иметь ответы (ответы на ответы не нужны, поэтому попроще). Всё это нужно сделать в 1 запрос, ответы так же хранятся в этой таблице. В табличку было добавлено новое поле type - определяющее, сообщение это или ответ на него. НО! тут есть одна загвоздка. По замыслу ответы должны сортироваться по дата-тайму в обратном от основных сообщений порядке. Многие скажут - "зачем это нужно, когда можно нормально всё это сортировать в одном направлении"? Однако, я считаю, что так будет лучше и удобнее пользователям. Не хочу отказываться от этой идеи.
Помогите составить запрос! Можно рассмотреть варианты с 2-я таблицами, структра которых может быть любой, с любыми полями. P.S. Для данной сортировки, так же было добавлено поле в основную таблицу - group - имеющее одно общее число сообщение - ответы (т.е. например у какого-нибудь сообщения group - 1, все ответы на него так же имеют group - 1)
Надеюсь великие гуру помогут мне
Для наибольшей наглядности нарисовал вот такой небольшой примеркич - как должно быть: см. прикреплённый файл!
echo$this->main->var;// С переменными всё отлично! "1"
echo$main_class::CONSTANTA;// Так тоже всё отлично, вернёт содержимое
echo$this->main::CONSTANTA;// А вот тут ФИГУ! Ошибка...
}
}
$main= new main;
$main->var=1;
$side= new side($main);
?>
Нас интересует echo $this->main::CONSTANTA;
Возможно я совсем чайник в ООП
Почему так не получается обратиться к константе?
Конечно можно переопределить все нужные константы в Конструкте, но хотелось бы напрямую по ссылке обращаться.
Как это правильно делать, подскажите?
Как устроено:
PHP-скрипт на основании записей из БД формирует PDF-отчёты (различная отчётная документация).
Для генерации PDF-файлов используется известная библиотека MPDF.
Файлы формируются на лету в цикле.
Камень преткновения:
250 файлов формируются приблизительно за 5 минут. Но не это самое страшное. При выполнении скрипта загрузка CPU составляет от 50 до 60%, что крайне много и начальнику очень не нравится
Исследования:
С помощью XHprof были произведены замеры нагрузки на выявление "слабого звена" в скрипте...
Как и предполагалось, основную нагрузку вызывает именно ядро формирования PDF. Библиотека очень большая и сложная, не думаю что есть смысл ковырят что-то в ней, ибо там всё завязанно и в равной степени весь её код и создаёт эту проблему.
Не уверен что другие библиотеки вроде FPDF будут работать быстрее...
Кто что думает по этому поводу? Может у кого найдутся какие-нибудь предложения решения данной проблемы?
* Возможно ли как-то ограничить приоритет скрипта чтобы он меньше загружал процессор? Пусть будет намного дольше, но чтобы нагрузка не превышала 10% ?
Если да, то как реализовать это средствами PHP?
При этом файл начинает открываться во вкладке браузера, и не только файлы с расширением *.RAR, но и даже *.EXE и др.! Даже если выбрать "сохранить по ссылке как..." и даже тогда в диалоговом окне сохранения файла, вместо родного расширения приписывает .htm - progra.htm
От браузера не зависит...
В интернете множество вопросов на эту тему, но ни одного внятного решения этой проблемы не нашёл...
Как сделать, чтобы файлы сохранялись как положено?