diff options
| author | 2019-10-08 20:52:03 +0200 | |
|---|---|---|
| committer | 2019-10-08 20:52:03 +0200 | |
| commit | 077e3cff458e4c36b364c065397d524025ee3de1 (patch) | |
| tree | d25d02fb5c5a2d625d6499f8ad204f64839843c4 | |
| parent | ac9e2df7f8c8d49750ecf28a3afbbe0bfb6d571d (diff) | |
Increase import size (#2563)
* Increase import size
This is merely a temporary workaround to allow at least some medium size
imports
https://framateam.org/freshrss/pl/7wbt4tcyetrfmris9xdcbq7uuw
The import module should be rewritten to process files one by one and as
data streams instead of loading multiple copies of the whole dataset in
memory as is the case now :-(
https://github.com/FreshRSS/FreshRSS/issues/1890
Note that the new SQLite export/import is distinct from this case.
* Use parameter
| -rwxr-xr-x | Docker/entrypoint.sh | 2 | ||||
| -rw-r--r-- | app/Controllers/importExportController.php | 18 |
2 files changed, 20 insertions, 0 deletions
diff --git a/Docker/entrypoint.sh b/Docker/entrypoint.sh index bb0e1bde0..dcbd7e231 100755 --- a/Docker/entrypoint.sh +++ b/Docker/entrypoint.sh @@ -6,6 +6,8 @@ chown -R :www-data . chmod -R g+r . && chmod -R g+w ./data/ find /etc/php*/ -name php.ini -exec sed -r -i "\\#^;?date.timezone#s#^.*#date.timezone = $TZ#" {} \; +find /etc/php*/ -name php.ini -exec sed -r -i "\\#^;?post_max_size#s#^.*#post_max_size = 32M#" {} \; +find /etc/php*/ -name php.ini -exec sed -r -i "\\#^;?upload_max_filesize#s#^.*#upload_max_filesize = 32M#" {} \; if [ -n "$CRON_MIN" ]; then ( diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php index 93897dde5..f2ae8238e 100644 --- a/app/Controllers/importExportController.php +++ b/app/Controllers/importExportController.php @@ -29,7 +29,25 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { Minz_View::prependTitle(_t('sub.import_export.title') . ' ยท '); } + private static function megabytes($size_str) { + switch (substr($size_str, -1)) { + case 'M': case 'm': return (int)$size_str; + case 'K': case 'k': return (int)$size_str / 1024; + case 'G': case 'g': return (int)$size_str * 1024; + } + return $size_str; + } + + private static function minimumMemory($mb) { + $mb = (int)$mb; + $ini = self::megabytes(ini_get('memory_limit')); + if ($ini < $mb) { + ini_set('memory_limit', $mb . 'M'); + } + } + public function importFile($name, $path, $username = null) { + self::minimumMemory(256); require_once(LIB_PATH . '/lib_opml.php'); $this->catDAO = new FreshRSS_CategoryDAO($username); |
