Php get windows size

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

Частая ситуация когда размеры файлов, разрешенных к загрузке на сайте стоят очень маленькие. Особенно этим грешат хостинги, где ставят минимальные настройки, не особо задумываясь о потребностях клиента. Это надо изменить и здесь необходимо провести некоторые настройки PHP отвечающие за размеры. Сам набор параметров я напишу чуть ниже и обозначу за что отвечает каждый из них.

Основные параметры

Итак что влияет на размеры файлов которые разрещены к загрузке в PHP.

upload_max_filesize – Максимальный размер загружаемого файла

Измеряется в мегабайтах или гигабайтах. Дефолтное значение: “2M”

max_file_uploads – Максимальное количество одновременных загрузок

Измеряется в цифровом количестве файлов. Дефолтное значение: “20”

post_max_size – Максимальный размер отправляемого через POST-запрос файла (Должен быть больше upload_max_filesize).

Измеряется в мегабайтах или гигабайтах. Дефолтное значение: “8M”

max_execution_time – Время в течении которого скрипт должен полностью завершить своё исполнение. Для отмены ограничений можно присвоить 0.

Измеряется в секундах или минутах. Дефолтное значение: “30”

max_input_time – Время в течении которого скрипт, должен получить и обработать все данные из POST и GET запросов.

Измеряется в секундах.

memory_limit – Ограничение на выделяемую для исполнения одного скрипта память. Для отмены ограничений, поставьте -1. Должен быть больше post_max_size.

Измеряется в мегабайтах или гигабайтах. Дефолтное значение: “128M”

Как изменить опции настройки PHP

Изменить возможно разными способами, я покажу как это сделать.

1. PHP.INI

Файл php.ini является основным файлом где хранятся настройки исполнения php скриптов. Пользовательский файл настроек обычно находится на несколько уровней выше папки www сайта. Иногда помещён в папку php-bin. Применение: опция = значение

Пример настройки добавленной в файл php.ini:

post_max_size = 512M
upload_max_filesize = 512M
max_execution_time = 3600
max_input_time = 1800

2. .HTACCESS

Файл .htaccess (или htaccess.txt) является содержанием настроек поведения сервера и обработки файлов определённого сайта. Размещается в корне сайта.

Применение: php_value опция значение

php_value post_max_size 512M
php_value upload_max_filesize 512M
php_value max_execution_time 3600
php_value max_input_time 1800

3. Любой PHP файл

Помимо вышеописанных способов, можно сделать изменение настроек к любому PHP файлу.

Применение: ini_set(‘опция’, ‘значение’);

ini_set(‘post_max_size’, ‘512M’);
ini_set(‘upload_max_filesize’, ‘512M’);
ini_set(‘max_execution_time’, ‘3600’);
ini_set(‘max_input_time’, ‘1800’);

* Необходимо учесть, что некоторые хостеры, блокируют изменение данных опций и после применения необходимо связаться с своим хостером, чтобы убедиться, что это работает.

How to get directory size in PHP

Any idea why the processor usage shoot up too high or 100% till the script execution is finish ? Can anything be done to optimize it? or is there any other alternative way to check folder and folders inside it size?

20 Answers 20

The following are other solutions offered elsewhere:

If on a Windows Host:

Else, if on a Linux Host:

The same idea as Janith Chinthana suggested. With a few fixes:

  • Converts $path to realpath
  • Performs iteration only if path is valid and folder exists
  • Skips . and .. files
  • Optimized for performance

A pure php example.

This works with any platform which is having php 5 or higher version.

Thanks to Jonathan Sampson, Adam Pierce and Janith Chinthana I did this one checking for most performant way to get the directory size. Should work on Windows and Linux Hosts.

I found this approach to be shorter and more compatible. The Mac OS X version of «du» doesn’t support the -b (or —bytes) option for some reason, so this sticks to the more-compatible -k option.

Читайте также:  Как сделать tcpdump linux

Returns the $filesize in bytes.

Even though there are already many many answers to this post, I feel I have to add another option for unix hosts that only returns the sum of all file sizes in the directory (recursively).

If you look at Jonathan’s answer he uses the du command. This command will return the total directory size but the pure PHP solutions posted by others here will return the sum of all file sizes. Big difference!

What to look out for

When running du on a newly created directory, it may return 4K instead of 0 . This may even get more confusing after having deleted files from the directory in question, having du reporting a total directory size that does not correspond to the sum of the sizes of the files within it. Why? The command du returns a report based on some file settings, as Hermann Ingjaldsson commented on this post.

The solution

To form a solution that behaves like some of the PHP-only scripts posted here, you can use ls command and pipe it to awk like this:

As a PHP function you could use something like this:

Getting the screen resolution using PHP

I need to find the screen resolution of a users screen who visits my website?

22 Answers 22

You can’t do it with pure PHP. You must do it with JavaScript. There are several articles written on how to do this.

Essentially, you can set a cookie or you can even do some Ajax to send the info to a PHP script. If you use jQuery, you can do it something like this:

jquery:

PHP (some_script.php)

All that is really basic but it should get you somewhere. Normally screen resolution is not what you really want though. You may be more interested in the size of the actual browser’s view port since that is actually where the page is rendered.

Directly with PHP is not possible but.

I write this simple code to save screen resolution on a PHP session to use on a image gallery.

PHP is a server side language — it’s executed on the server only, and the resultant program output is sent to the client. As such, there’s no «client screen» information available.

That said, you can have the client tell you what their screen resolution is via JavaScript. Write a small scriptlet to send you screen.width and screen.height — possibly via AJAX, or more likely with an initial «jump page» that finds it, then redirects to http://example.net/index.php?size=AxB

Though speaking as a user, I’d much prefer you to design a site to fluidly handle any screen resolution. I browse in different sized windows, mostly not maximized.

I found using CSS inside my html inside my php did the trick for me.

This will output a smaller sized headline if the screen is 480px or less. So no need to pass any vars using JS or similar.

This is a very simple process. Yes, you cannot get the width and height in PHP. It is true that JQuery can provide the screen’s width and height. First go to https://github.com/carhartl/jquery-cookie and get jquery.cookie.js. Here is example using php to get the screen width and height:

I have a test that you can execute: http://rw-wrd.net/test.php

Use JavaScript ( screen.width and screen.height IIRC, but I may be wrong, haven’t done JS in a while). PHP cannot do it.

Fully Working Example

I couldn’t find an actual working PHP example to «invisibly» (without URL parameters) return client screen size, and other properties, to server-side PHP, so I put this example together.

JS populates and submits a hidden form (scripted by PHP from an array of JS properties), POST ing to itself (the data now available in PHP) and returns the data in a table.

Читайте также:  Inbox on windows mail

The returned data is extract ‘d into variables. For example:

  • window.innerWidth is returned in $windowinnerWidth

You can try RESS (RESponsive design + Server side components), see this tutorial:

I don’t think you can detect the screen size purely with PHP but you can detect the user-agent..

Here’s a link to a more detailed script: PHP Mobile Detect

You can set window width in cookies using JS in front end and you can get it in PHP:

Here is the Javascript Code: (index.php)

Here is the PHP Code: (sqldb.php)

I hope that you know how to get the $userid from the Session, and for that you need an Database with the Table called users, and an Table inside users called screen ;=) Regards KSP

The only way is to use javascript, then get the javascript to post to it to your php(if you really need there res server side). This will however completly fall flat on its face, if they turn javascript off.

This can be done easily using cookies. This method allows the page to check the stored cookie values against the screen height and width (or browser view port height and width values), and if they are different it will reset the cookie and reload the page. The code needs to allow for user preferences. If persistant cookies are turned off, use a session cookie. If that doesn’t work you have to go with a default setting.

Как увеличить память и время для PHP скриптов

Настройки потребления ресурсов в PHP скриптах можно установить в главном конфигурационном файле php.ini, а также в самих скриптах.

В файле php.ini за это отвечают директивы из раздела Resource Limits (ограничение потребления ресурсов).

Как увеличить память для PHP скриптов

Для этого в файле php.ini найдите и отредактируйте директиву:

Эта директива задаёт максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если этого не происходит, парсер завершает работу скрипта. Этот механизм помогает предотвратить зависание сервера из-за плохо написанного скрипта. По умолчанию на загрузку даётся 30 секунд. Если PHP запущен из командной строки, это значение по умолчанию равно 0.

На максимальное время выполнения не влияют системные вызовы, потоковые операции и т.п.

При работе в безопасном режиме эту настройку нельзя изменить функцией ini_set(). Если значение все же нужно изменить, надо либо выключить безопасный режим, либо изменить значение прямо в php.ini.

Веб-серверы обычно имеют свои настройки тайм-аута, по истечении которого сами завершают выполнение скрипта PHP. В Apache есть директива Timeout, в IIS есть функция CGI timeout. В обоих случаях по умолчанию установлено 300 секунд. Точные значения можно узнать из документации к веб-серверу.

Функция для увеличения и ограничения времени выполнения PHP

Функция set_time_limit ограничивает время выполнения скрипта.

Она задает время в секундах, в течение которого скрипт должен завершить работу. Если скрипт не успевает, вызывается фатальная ошибка. По умолчанию дается 30 секунд, либо время, записанное в настройке max_execution_time в php.ini (если такая настройка установлена).

При вызове set_time_limit() перезапускает счетчик с нуля. Другими словами, если тайм-аут изначально был 30 секунд, и через 25 секунд после запуска скрипта будет вызвана функция set_time_limit(20), то скрипт будет работать максимум 45 секунд.

  • СЕКУНДЫ (максимальное время выполнения в секундах. Если задан ноль, время выполнения неограничено)

Возвращаемые значения: возвращает TRUE в случае успеха, иначе FALSE.

Внимание: эта функция не работает, если PHP работает в безопасном режиме. Обойти это ограничение можно только выключив безопасный режим или изменив значение настройки в php.ini.

Замечание: функция set_time_limit() и директива max_execution_time влияют на время выполнения только самого скрипта. Время, затраченное на различные действия вне скрипта, такие как системные вызовы функции system(), потоковые операции, запросы к базам данных и т.п. не включаются в расчет времени выполнения скрипта. Это не относится к системам Windows, где расчитывается абсолютное время выполнения.

Читайте также:  Windows порядок сетевых адаптеров

Обе set_time_limit(…) и ini_set(‘max_execution_time’,…); не учитывают время, потраченное функциями sleep, file_get_contents, shell_exec, mysql_query и некоторыми другими.

Увеличение выделенной памяти для PHP скриптов

Директива в файле php.ini

задаёт максимальный объем памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы убрать ограничения, установите значение этой директивы в -1.

В версиях до PHP 5.2.1 для использования этой директивы, она должна была быть указана на этапе компиляции. Так, ваша строка конфигурации должна была включать: —enable-memory-limit. Эта опция компиляции была также необходима для использования функций memory_get_usage() и memory_get_peak_usage() до версии 5.2.1.

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

Доступные опции: K (для килобайт), M (для мегабайт) и G (для гигабайт; доступна начиная с PHP 5.1.0); они регистронезависимы. Все остальное считается байтами. 1M равно одному мегабайту или 1048576 байтам. 1K равно одному килобайту или 1024 байтам. Эти сокращения вы можете использовать в php.ini и в функции ini_set(). Обратите внимание, что числовое значение приводится к типу integer; например, 0.5M интерпретируется как 0.

Увеличение времени парсинга данных из запроса.

Директива в файле php.ini

задаёт максимальное время в секундах, в течение которого скрипт должен разобрать все входные данные, переданные запросами вроде POST или GET. Это время измеряется от момента, когда PHP вызван на сервере до момента, когда скрипт начинает выполняться. Значение по умолчанию -1, что означает, что будет использоваться max_execution_time. Если установить равным 0, то ограничений по времени не будет.

При запуске в командной строке значение директивы установлено на -1 (неограниченно).

Увеличение глубины вложенности входных переменных

Директива в файле php.ini

задаёт максимальную глубину вложенности входных переменных (то есть $_GET, $_POST.). По умолчанию данная директива закомментирована.

Ограничение на количество входных переменных

Директива в файле php.ini

определяет, входных переменных может быть принято в одном запросе (ограничение накладывается на каждую из глобальных переменных $_GET, $_POST и $_COOKIE отдельно). Использование этой директивы снижает вероятность сбоев в случае атак с использованием хеш-коллизий. Если входных переменных больше, чем задано директивой, выбрасывается предупреждение E_WARNING, а все последующие переменные в запросе игнорируются. По умолчанию данная директива закомментирована.

Внимание: после внесения изменений в файл php.ini необходимо перезагрузить веб-сервер, чтобы изменения вступили в силу.

Проверка использование ресурсов

Функция getrusage получает информацию об использовании текущего ресурса.

  • who (если аргумент who равен 1, getrusage будет вызвана с RUSAGE_CHILDREN).

Возвращаемые значения: возвращает ассоциативный массив, содержащий данные возвращённые из системного вызова. Имена элементов соответствуют документированным именам полей.

Пример использования getrusage():

Увеличение разрешённого размера файлов для загрузки на сервер

Кроме описанных ограничений на потребление непосредственных ресурсов веб-сервера, также имеются ограничения, которые оказывают косвенное воздействие на ресурсы: например, загрузка слишком большого файла на сервер может потребовать большого количества ресурсов для его обработки, либо привести к переполнению дискового хранилища сервера. Поэтому существуют дополнительные лимиты, включённые в другие разделы конфигурационного файла помимо Resource Limits.

В частности, директива

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

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

Максимально допустимый размер данных, отправляемых методом POST

Методом пост могут отправляться как текстовые данные (например, при отправке комментария на сайт), так и файлы. Если вы увеличили значение upload_max_filesize чтобы иметь возможность загружать файлы большего размера на сайт, то также нужно увеличить и значение директивы:

которая устанавливает максимально допустимый размер данных, отправляемых методом POST. Это значение также влияет на загрузку файлов. Для загрузки больших файлов это значение должно быть больше значения директивы upload_max_filesize. В сущности, memory_limit должна быть больше чем post_max_size. Если используется integer, значение измеряется байтами. Вы также можете использовать сокращённую запись, которая описана выше. Если размер POST-данных больше чем post_max_size, суперглобальные переменные $_POST и $_FILES будут пустыми. Это можно отследить различными способами, например передав $_GET переменную в скрипт, обрабатывающий данные, т.е.

Оцените статью