Closed adjenks closed 5 years ago
I can confirm this issue, I have huge problems especially with xlsx files downloaded from google spreadsheet, I often have to delete emty rows and columns before exporting to avoid memory exaustion. Test is simple, just create a google spreadsheet with 10 sheets and about 50 rows of data for each sheet. Memory usage is lower when exporting to ods instead of xlsx
@franksl My xlsx file needed to have custom properties. Instead of using an xlsx file with custom properties as a template, I worked around the problem by loading a csv and then adding the custom properties via the API. Loading the csv only used about 2MB of memory and loaded way faster. This is a fine workaround for me in this case, but if I had a very complex template that I needed to use, I would not want to rebuild it via the API.
@adjenks Thanks for the advice, unfortunately I have complex excel document with many sheets that are part of a complex automated system, using csv files would be overkill for me. The issue for me is that opening an xlsx document that contains about 1000 cells with significant values takes more than 256MB of memory, this is really strange.
@franksl Have you tried an xls file instead of an xlsx file? Or tried converting it to an ods file?
@adjenks Yes, as I said in a previous comment I'm forced to use ods on some files actually and memory usage is lower, sometimes I still have problems even with ods.
And also I'm experiencing memory leaks. This code:
require __DIR__ . '/vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
print('step 0 load: ');
print(memory_get_usage() / 1024 / 1024);
echo PHP_EOL;
$spreadsheet = IOFactory::load('/tmp/201906171316-638092745/001-201906171316.xlsx');
print('step 1 load: ');
print(memory_get_usage() / 1024 / 1024);
echo PHP_EOL;
$spreadsheet = IOFactory::load('/tmp/201906171316-638092745/002-201906171316.xlsx');
print('step 2 load: ');
print(memory_get_usage() / 1024 / 1024);
echo PHP_EOL;
$spreadsheet = IOFactory::load('/tmp/201906171316-638092745/003-201906171316.xlsx');
print('step 3 load: ');
print(memory_get_usage() / 1024 / 1024);
echo PHP_EOL;
$spreadsheet = IOFactory::load('/tmp/201906171316-638092745/005-201906171316.xlsx');
print('step 4 load: ');
print(memory_get_usage() / 1024 / 1024);
echo PHP_EOL;
$spreadsheet = IOFactory::load('/tmp/201906171316-638092745/006-201906171316.xlsx');
print('step 5 load: ');
print(memory_get_usage() / 1024 / 1024);
echo PHP_EOL;
$spreadsheet = IOFactory::load('/tmp/201906171316-638092745/007-201906171316.xlsx');
print('step 6 load: ');
print(memory_get_usage() / 1024 / 1024);
echo PHP_EOL;
$spreadsheet = IOFactory::load('/tmp/201906171316-638092745/008-201906171316.xlsx');
print('step 7 load: ');
print(memory_get_usage() / 1024 / 1024);
echo PHP_EOL;
$spreadsheet = IOFactory::load('/tmp/201906171316-638092745/009-201906171316.xlsx');
print('step 8 load: ');
print(memory_get_usage() / 1024 / 1024);
echo PHP_EOL;
$spreadsheet = IOFactory::load('/tmp/201906171316-638092745/001-201906171316.xlsx');
print('step 9 load: ');
print(memory_get_usage() / 1024 / 1024);
echo PHP_EOL;
Produced following output:
step 0 load: 0.60233306884766
step 1 load: 162.00587463379
step 2 load: 337.64506530762
step 3 load: 355.55595397949
step 4 load: 357.38922119141
step 5 load: 364.33184051514
step 6 load: 365.58126831055
step 7 load: 364.88866424561
step 8 load: 363.29885101318
step 9 load: 339.1379776001
All loaded files are produced using the package itself. Details on files:
Ξ php/test → ls -lh /tmp/201906171316-638092745/* -d
-rw-r--r-- 1 www-data www-data 4.7M Jun 17 13:17 /tmp/201906171316-638092745/001-201906171316.xlsx
-rw-r--r-- 1 www-data www-data 3.4M Jun 17 13:19 /tmp/201906171316-638092745/002-201906171316.xlsx
-rw-r--r-- 1 www-data www-data 3.5M Jun 17 13:21 /tmp/201906171316-638092745/003-201906171316.xlsx
-rw-r--r-- 1 www-data www-data 3.6M Jun 17 13:23 /tmp/201906171316-638092745/004-201906171316.xlsx
-rw-r--r-- 1 www-data www-data 3.9M Jun 17 13:25 /tmp/201906171316-638092745/005-201906171316.xlsx
-rw-r--r-- 1 www-data www-data 4.3M Jun 17 13:27 /tmp/201906171316-638092745/006-201906171316.xlsx
-rw-r--r-- 1 www-data www-data 3.9M Jun 17 13:30 /tmp/201906171316-638092745/007-201906171316.xlsx
-rw-r--r-- 1 www-data www-data 4.9M Jun 17 13:32 /tmp/201906171316-638092745/008-201906171316.xlsx
-rw-r--r-- 1 www-data www-data 3.7M Jun 17 13:35 /tmp/201906171316-638092745/009-201906171316.xlsx
Tested with phpoffice/phpspreadsheet ^1.7
AND phpoffice/phpspreadsheet ^1.6
phpinfo()
PHP Version => 7.2.19-1+ubuntu16.04.1+deb.sury.org+1
System => Linux shahin-douran 4.15.0-47-generic #50~16.04.1-Ubuntu SMP Fri Mar 15 16:06:21 UTC 2019 x86_64
Build Date => May 31 2019 11:16:55
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /etc/php/7.2/cli
Loaded Configuration File => /etc/php/7.2/cli/php.ini
Scan this dir for additional .ini files => /etc/php/7.2/cli/conf.d
Additional .ini files parsed => /etc/php/7.2/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.2/cli/conf.d/10-opcache.ini,
/etc/php/7.2/cli/conf.d/10-pdo.ini,
/etc/php/7.2/cli/conf.d/15-xml.ini,
/etc/php/7.2/cli/conf.d/20-calendar.ini,
/etc/php/7.2/cli/conf.d/20-ctype.ini,
/etc/php/7.2/cli/conf.d/20-curl.ini,
/etc/php/7.2/cli/conf.d/20-dom.ini,
/etc/php/7.2/cli/conf.d/20-exif.ini,
/etc/php/7.2/cli/conf.d/20-fileinfo.ini,
/etc/php/7.2/cli/conf.d/20-ftp.ini,
/etc/php/7.2/cli/conf.d/20-gd.ini,
/etc/php/7.2/cli/conf.d/20-gettext.ini,
/etc/php/7.2/cli/conf.d/20-iconv.ini,
/etc/php/7.2/cli/conf.d/20-imagick.ini,
/etc/php/7.2/cli/conf.d/20-json.ini,
/etc/php/7.2/cli/conf.d/20-mbstring.ini,
/etc/php/7.2/cli/conf.d/20-mysqli.ini,
/etc/php/7.2/cli/conf.d/20-pdo_mysql.ini,
/etc/php/7.2/cli/conf.d/20-pdo_pgsql.ini,
/etc/php/7.2/cli/conf.d/20-pgsql.ini,
/etc/php/7.2/cli/conf.d/20-phar.ini,
/etc/php/7.2/cli/conf.d/20-posix.ini,
/etc/php/7.2/cli/conf.d/20-readline.ini,
/etc/php/7.2/cli/conf.d/20-shmop.ini,
/etc/php/7.2/cli/conf.d/20-simplexml.ini,
/etc/php/7.2/cli/conf.d/20-sockets.ini,
/etc/php/7.2/cli/conf.d/20-sysvmsg.ini,
/etc/php/7.2/cli/conf.d/20-sysvsem.ini,
/etc/php/7.2/cli/conf.d/20-sysvshm.ini,
/etc/php/7.2/cli/conf.d/20-tokenizer.ini,
/etc/php/7.2/cli/conf.d/20-wddx.ini,
/etc/php/7.2/cli/conf.d/20-xmlreader.ini,
/etc/php/7.2/cli/conf.d/20-xmlwriter.ini,
/etc/php/7.2/cli/conf.d/20-xsl.ini,
/etc/php/7.2/cli/conf.d/20-zip.ini
PHP API => 20170718
PHP Extension => 20170718
Zend Extension => 320170718
Zend Extension Build => API320170718,NTS
PHP Extension Build => API20170718,NTS
Debug Build => no
Thread Safety => disabled
Zend Signal Handling => enabled
Zend Memory Manager => enabled
Zend Multibyte Support => provided by mbstring
IPv6 Support => enabled
DTrace Support => available, disabled
Registered PHP Streams => https, ftps, compress.zlib, php, file, glob, data, http, ftp, phar, zip
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.*
This program makes use of the Zend Scripting Language Engine:
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.19-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
_______________________________________________________________________
Configuration
calendar
Calendar support => enabled
Core
PHP Version => 7.2.19-1+ubuntu16.04.1+deb.sury.org+1
Directive => Local Value => Master Value
allow_url_fopen => On => On
allow_url_include => Off => Off
arg_separator.input => & => &
arg_separator.output => & => &
auto_append_file => no value => no value
auto_globals_jit => On => On
auto_prepend_file => no value => no value
browscap => no value => no value
default_charset => UTF-8 => UTF-8
default_mimetype => text/html => text/html
disable_classes => no value => no value
disable_functions => no value => no value
display_errors => Off => Off
display_startup_errors => Off => Off
doc_root => no value => no value
docref_ext => no value => no value
docref_root => no value => no value
enable_dl => Off => Off
enable_post_data_reading => On => On
error_append_string => no value => no value
error_log => no value => no value
error_prepend_string => no value => no value
error_reporting => 22527 => 22527
expose_php => On => On
extension_dir => /usr/lib/php/20170718 => /usr/lib/php/20170718
file_uploads => On => On
hard_timeout => 2 => 2
highlight.comment => <font style="color: #FF8000">#FF8000</font> => <font style="color: #FF8000">#FF8000</font>
highlight.default => <font style="color: #0000BB">#0000BB</font> => <font style="color: #0000BB">#0000BB</font>
highlight.html => <font style="color: #000000">#000000</font> => <font style="color: #000000">#000000</font>
highlight.keyword => <font style="color: #007700">#007700</font> => <font style="color: #007700">#007700</font>
highlight.string => <font style="color: #DD0000">#DD0000</font> => <font style="color: #DD0000">#DD0000</font>
html_errors => Off => Off
ignore_repeated_errors => Off => Off
ignore_repeated_source => Off => Off
ignore_user_abort => Off => Off
implicit_flush => On => On
include_path => .:/usr/share/php => .:/usr/share/php
input_encoding => no value => no value
internal_encoding => no value => no value
log_errors => On => On
log_errors_max_len => 1024 => 1024
mail.add_x_header => Off => Off
mail.force_extra_parameters => no value => no value
mail.log => no value => no value
max_execution_time => 0 => 0
max_file_uploads => 20 => 20
max_input_nesting_level => 64 => 64
max_input_time => -1 => -1
max_input_vars => 1000 => 1000
memory_limit => -1 => -1
open_basedir => no value => no value
output_buffering => 0 => 0
output_encoding => no value => no value
output_handler => no value => no value
post_max_size => 8M => 8M
precision => 14 => 14
realpath_cache_size => 4096K => 4096K
realpath_cache_ttl => 120 => 120
register_argc_argv => On => On
report_memleaks => On => On
report_zend_debug => Off => Off
request_order => GP => GP
sendmail_from => no value => no value
sendmail_path => /usr/sbin/sendmail -t -i => /usr/sbin/sendmail -t -i
serialize_precision => -1 => -1
short_open_tag => Off => Off
SMTP => localhost => localhost
smtp_port => 25 => 25
sys_temp_dir => no value => no value
track_errors => Off => Off
unserialize_callback_func => no value => no value
upload_max_filesize => 2M => 2M
upload_tmp_dir => no value => no value
user_dir => no value => no value
user_ini.cache_ttl => 300 => 300
user_ini.filename => .user.ini => .user.ini
variables_order => GPCS => GPCS
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
zend.assertions => -1 => -1
zend.detect_unicode => On => On
zend.enable_gc => On => On
zend.multibyte => Off => Off
zend.script_encoding => no value => no value
zend.signal_check => Off => Off
ctype
ctype functions => enabled
curl
cURL support => enabled
cURL Information => 7.47.0
Age => 3
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => Yes
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => No
GSSAPI => Yes
KERBEROS5 => Yes
UNIX_SOCKETS => Yes
PSL => No
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, smb, smbs, smtp, smtps, telnet, tftp
Host => x86_64-pc-linux-gnu
SSL Version => OpenSSL/1.0.2g
ZLib Version => 1.2.8
date
date/time support => enabled
timelib version => 2017.09
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => UTC
Directive => Local Value => Master Value
date.default_latitude => 31.7667 => 31.7667
date.default_longitude => 35.2333 => 35.2333
date.sunrise_zenith => 90.583333 => 90.583333
date.sunset_zenith => 90.583333 => 90.583333
date.timezone => no value => no value
dom
DOM/XML => enabled
DOM/XML API Version => 20031129
libxml Version => 2.9.4
HTML Support => enabled
XPath Support => enabled
XPointer Support => enabled
Schema Support => enabled
RelaxNG Support => enabled
exif
EXIF Support => enabled
EXIF Version => 7.2.19-1+ubuntu16.04.1+deb.sury.org+1
Supported EXIF Version => 0220
Supported filetypes => JPEG, TIFF
Multibyte decoding support using mbstring => enabled
Extended EXIF tag formats => Canon, Casio, Fujifilm, Nikon, Olympus, Samsung, Panasonic, DJI, Sony, Pentax, Minolta, Sigma, Foveon, Kyocera, Ricoh, AGFA, Epson
Directive => Local Value => Master Value
exif.decode_jis_intel => JIS => JIS
exif.decode_jis_motorola => JIS => JIS
exif.decode_unicode_intel => UCS-2LE => UCS-2LE
exif.decode_unicode_motorola => UCS-2BE => UCS-2BE
exif.encode_jis => no value => no value
exif.encode_unicode => ISO-8859-15 => ISO-8859-15
fileinfo
fileinfo support => enabled
version => 1.0.5
libmagic => 531
filter
Input Validation and Filtering => enabled
Revision => $Id: 5a34caaa246b9df197f4b43af8ac66a07464fe4b $
Directive => Local Value => Master Value
filter.default => unsafe_raw => unsafe_raw
filter.default_flags => no value => no value
ftp
FTP support => enabled
FTPS support => enabled
gd
GD Support => enabled
GD headers Version => 2.2.5
GD library Version => 2.2.5
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.6.1
GIF Read Support => enabled
GIF Create Support => enabled
JPEG Support => enabled
libJPEG Version => 8
PNG Support => enabled
libPNG Version => 1.2.54
WBMP Support => enabled
XPM Support => enabled
libXpm Version => 30411
XBM Support => enabled
WebP Support => enabled
Directive => Local Value => Master Value
gd.jpeg_ignore_warning => 1 => 1
gettext
GetText Support => enabled
hash
hash support => enabled
Hashing Engines => md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b fnv132 fnv1a32 fnv164 fnv1a64 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5
MHASH support => Enabled
MHASH API Version => Emulated Support
iconv
iconv support => enabled
iconv implementation => glibc
iconv library version => 2.23
Directive => Local Value => Master Value
iconv.input_encoding => no value => no value
iconv.internal_encoding => no value => no value
iconv.output_encoding => no value => no value
imagick
imagick module => enabled
imagick module version => 3.4.3
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version => ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28 http://www.imagemagick.org
Imagick using ImageMagick library version => ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28 http://www.imagemagick.org
ImageMagick copyright => Copyright (C) 1999-2014 ImageMagick Studio LLC
ImageMagick release date => 2018-09-28
ImageMagick number of supported formats: => 205
ImageMagick supported formats => 3FR, AAI, AI, ART, ARW, AVI, AVS, BGR, BGRA, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DCM, DCR, DCX, DDS, DFONT, DNG, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, FAX, FITS, FRACTAL, FTS, G3, GIF, GIF87, GRADIENT, GRAY, GROUP4, HALD, HDR, HISTOGRAM, HRZ, HTM, HTML, ICB, ICO, ICON, INFO, INLINE, IPL, ISOBRL, JBG, JBIG, JNG, JNX, JPEG, JPG, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAP, MASK, MAT, MATTE, MEF, MIFF, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WMV, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV
Directive => Local Value => Master Value
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0
imagick.skip_version_check => 1 => 1
json
json support => enabled
json version => 1.6.0
libxml
libXML support => active
libXML Compiled Version => 2.9.4
libXML Loaded Version => 20904
libXML streams => enabled
mbstring
Multibyte Support => enabled
Multibyte string engine => libmbfl
HTTP input encoding translation => disabled
libmbfl version => 1.3.2
oniguruma version => 6.3.0
mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
Multibyte (japanese) regex support => enabled
Multibyte regex (oniguruma) backtrack check => On
Multibyte regex (oniguruma) version => 6.3.0
Directive => Local Value => Master Value
mbstring.detect_order => no value => no value
mbstring.encoding_translation => Off => Off
mbstring.func_overload => 0 => 0
mbstring.http_input => no value => no value
mbstring.http_output => no value => no value
mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml)
mbstring.internal_encoding => no value => no value
mbstring.language => neutral => neutral
mbstring.strict_detection => Off => Off
mbstring.substitute_character => no value => no value
mysqli
MysqlI Support => enabled
Client API library version => mysqlnd 5.0.12-dev - 20150407 - $Id: 3591daad22de08524295e1bd073aceeff11e6579 $
Active Persistent Links => 0
Inactive Persistent Links => 0
Active Links => 0
Directive => Local Value => Master Value
mysqli.allow_local_infile => Off => Off
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => no value => no value
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
mysqli.rollback_on_cached_plink => Off => Off
mysqlnd
mysqlnd => enabled
Version => mysqlnd 5.0.12-dev - 20150407 - $Id: 3591daad22de08524295e1bd073aceeff11e6579 $
Compression => supported
core SSL => supported
extended SSL => supported
Command buffer size => 4096
Read buffer size => 32768
Read timeout => 86400
Collecting statistics => Yes
Collecting memory statistics => No
Tracing => n/a
Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password
API Extensions => mysqli,pdo_mysql
mysqlnd statistics =>
bytes_sent => 0
bytes_received => 0
packets_sent => 0
packets_received => 0
protocol_overhead_in => 0
protocol_overhead_out => 0
bytes_received_ok_packet => 0
bytes_received_eof_packet => 0
bytes_received_rset_header_packet => 0
bytes_received_rset_field_meta_packet => 0
bytes_received_rset_row_packet => 0
bytes_received_prepare_response_packet => 0
bytes_received_change_user_packet => 0
packets_sent_command => 0
packets_received_ok => 0
packets_received_eof => 0
packets_received_rset_header => 0
packets_received_rset_field_meta => 0
packets_received_rset_row => 0
packets_received_prepare_response => 0
packets_received_change_user => 0
result_set_queries => 0
non_result_set_queries => 0
no_index_used => 0
bad_index_used => 0
slow_queries => 0
buffered_sets => 0
unbuffered_sets => 0
ps_buffered_sets => 0
ps_unbuffered_sets => 0
flushed_normal_sets => 0
flushed_ps_sets => 0
ps_prepared_never_executed => 0
ps_prepared_once_executed => 0
rows_fetched_from_server_normal => 0
rows_fetched_from_server_ps => 0
rows_buffered_from_client_normal => 0
rows_buffered_from_client_ps => 0
rows_fetched_from_client_normal_buffered => 0
rows_fetched_from_client_normal_unbuffered => 0
rows_fetched_from_client_ps_buffered => 0
rows_fetched_from_client_ps_unbuffered => 0
rows_fetched_from_client_ps_cursor => 0
rows_affected_normal => 0
rows_affected_ps => 0
rows_skipped_normal => 0
rows_skipped_ps => 0
copy_on_write_saved => 0
copy_on_write_performed => 0
command_buffer_too_small => 0
connect_success => 0
connect_failure => 0
connection_reused => 0
reconnect => 0
pconnect_success => 0
active_connections => 0
active_persistent_connections => 0
explicit_close => 0
implicit_close => 0
disconnect_close => 0
in_middle_of_command_close => 0
explicit_free_result => 0
implicit_free_result => 0
explicit_stmt_close => 0
implicit_stmt_close => 0
mem_emalloc_count => 0
mem_emalloc_amount => 0
mem_ecalloc_count => 0
mem_ecalloc_amount => 0
mem_erealloc_count => 0
mem_erealloc_amount => 0
mem_efree_count => 0
mem_efree_amount => 0
mem_malloc_count => 0
mem_malloc_amount => 0
mem_calloc_count => 0
mem_calloc_amount => 0
mem_realloc_count => 0
mem_realloc_amount => 0
mem_free_count => 0
mem_free_amount => 0
mem_estrndup_count => 0
mem_strndup_count => 0
mem_estrdup_count => 0
mem_strdup_count => 0
mem_edupl_count => 0
mem_dupl_count => 0
proto_text_fetched_null => 0
proto_text_fetched_bit => 0
proto_text_fetched_tinyint => 0
proto_text_fetched_short => 0
proto_text_fetched_int24 => 0
proto_text_fetched_int => 0
proto_text_fetched_bigint => 0
proto_text_fetched_decimal => 0
proto_text_fetched_float => 0
proto_text_fetched_double => 0
proto_text_fetched_date => 0
proto_text_fetched_year => 0
proto_text_fetched_time => 0
proto_text_fetched_datetime => 0
proto_text_fetched_timestamp => 0
proto_text_fetched_string => 0
proto_text_fetched_blob => 0
proto_text_fetched_enum => 0
proto_text_fetched_set => 0
proto_text_fetched_geometry => 0
proto_text_fetched_other => 0
proto_binary_fetched_null => 0
proto_binary_fetched_bit => 0
proto_binary_fetched_tinyint => 0
proto_binary_fetched_short => 0
proto_binary_fetched_int24 => 0
proto_binary_fetched_int => 0
proto_binary_fetched_bigint => 0
proto_binary_fetched_decimal => 0
proto_binary_fetched_float => 0
proto_binary_fetched_double => 0
proto_binary_fetched_date => 0
proto_binary_fetched_year => 0
proto_binary_fetched_time => 0
proto_binary_fetched_datetime => 0
proto_binary_fetched_timestamp => 0
proto_binary_fetched_string => 0
proto_binary_fetched_json => 0
proto_binary_fetched_blob => 0
proto_binary_fetched_enum => 0
proto_binary_fetched_set => 0
proto_binary_fetched_geometry => 0
proto_binary_fetched_other => 0
init_command_executed_count => 0
init_command_failed_count => 0
com_quit => 0
com_init_db => 0
com_query => 0
com_field_list => 0
com_create_db => 0
com_drop_db => 0
com_refresh => 0
com_shutdown => 0
com_statistics => 0
com_process_info => 0
com_connect => 0
com_process_kill => 0
com_debug => 0
com_ping => 0
com_time => 0
com_delayed_insert => 0
com_change_user => 0
com_binlog_dump => 0
com_table_dump => 0
com_connect_out => 0
com_register_slave => 0
com_stmt_prepare => 0
com_stmt_execute => 0
com_stmt_send_long_data => 0
com_stmt_close => 0
com_stmt_reset => 0
com_stmt_set_option => 0
com_stmt_fetch => 0
com_deamon => 0
bytes_received_real_data_normal => 0
bytes_received_real_data_ps => 0
openssl
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 1.1.1c 28 May 2019
OpenSSL Header Version => OpenSSL 1.1.1b 26 Feb 2019
Openssl default config => /usr/lib/ssl/openssl.cnf
Directive => Local Value => Master Value
openssl.cafile => no value => no value
openssl.capath => no value => no value
pcntl
pcntl support => enabled
pcre
PCRE (Perl Compatible Regular Expressions) Support => enabled
PCRE Library Version => 8.42 2018-03-20
PCRE JIT Support => enabled
Directive => Local Value => Master Value
pcre.backtrack_limit => 1000000 => 1000000
pcre.jit => 1 => 1
pcre.recursion_limit => 100000 => 100000
PDO
PDO support => enabled
PDO drivers => mysql, pgsql
pdo_mysql
PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.12-dev - 20150407 - $Id: 3591daad22de08524295e1bd073aceeff11e6579 $
Directive => Local Value => Master Value
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
pdo_pgsql
PDO Driver for PostgreSQL => enabled
PostgreSQL(libpq) Version => 9.5.17
Module version => 7.2.19-1+ubuntu16.04.1+deb.sury.org+1
Revision => $Id: 9c5f356c77143981d2e905e276e439501fe0f419 $
pgsql
PostgreSQL Support => enabled
PostgreSQL(libpq) Version => 9.5.17
PostgreSQL(libpq) => PostgreSQL 9.5.17 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609, 64-bit
Multibyte character support => enabled
SSL support => enabled
Active Persistent Links => 0
Active Links => 0
Directive => Local Value => Master Value
pgsql.allow_persistent => On => On
pgsql.auto_reset_persistent => Off => Off
pgsql.ignore_notice => Off => Off
pgsql.log_notice => Off => Off
pgsql.max_links => Unlimited => Unlimited
pgsql.max_persistent => Unlimited => Unlimited
Phar
Phar: PHP Archive support => enabled
Phar EXT version => 2.0.2
Phar API version => 1.1.1
SVN revision => $Id: f1155e62742ca367e521a3e412667d8ee34eead9 $
Phar-based phar archives => enabled
Tar-based phar archives => enabled
ZIP-based phar archives => enabled
gzip compression => enabled
bzip2 compression => disabled (install pecl/bz2)
Native OpenSSL support => enabled
Phar based on pear/PHP_Archive, original concept by Davey Shafik.
Phar fully realized by Gregory Beaver and Marcus Boerger.
Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.
Directive => Local Value => Master Value
phar.cache_list => no value => no value
phar.readonly => On => On
phar.require_hash => On => On
posix
Revision => $Id: 0a764bab332255746424a1e6cfbaaeebab998e4c $
readline
Readline Support => enabled
Readline library => EditLine wrapper
Directive => Local Value => Master Value
cli.pager => no value => no value
cli.prompt => \b \> => \b \>
Reflection
Reflection => enabled
Version => $Id: 012f23982d9d94728b4da252b9f21f9de8afd4df $
session
Session Support => enabled
Registered save handlers => files user
Registered serializer handlers => php_serialize php php_binary wddx
Directive => Local Value => Master Value
session.auto_start => Off => Off
session.cache_expire => 180 => 180
session.cache_limiter => nocache => nocache
session.cookie_domain => no value => no value
session.cookie_httponly => no value => no value
session.cookie_lifetime => 0 => 0
session.cookie_path => / => /
session.cookie_secure => 0 => 0
session.gc_divisor => 1000 => 1000
session.gc_maxlifetime => 1440 => 1440
session.gc_probability => 0 => 0
session.lazy_write => On => On
session.name => PHPSESSID => PHPSESSID
session.referer_check => no value => no value
session.save_handler => files => files
session.save_path => /var/lib/php/sessions => /var/lib/php/sessions
session.serialize_handler => php => php
session.sid_bits_per_character => 5 => 5
session.sid_length => 26 => 26
session.upload_progress.cleanup => On => On
session.upload_progress.enabled => On => On
session.upload_progress.freq => 1% => 1%
session.upload_progress.min_freq => 1 => 1
session.upload_progress.name => PHP_SESSION_UPLOAD_PROGRESS => PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix => upload_progress_ => upload_progress_
session.use_cookies => 1 => 1
session.use_only_cookies => 1 => 1
session.use_strict_mode => 0 => 0
session.use_trans_sid => 0 => 0
shmop
shmop support => enabled
SimpleXML
Simplexml support => enabled
Revision => $Id: 341daed0ee94ea8f728bfd0ba4626e6ed365c0d1 $
Schema support => enabled
sockets
Sockets Support => enabled
sodium
sodium support => enabled
libsodium headers version => 1.0.17
libsodium library version => 1.0.17
SPL
SPL support => enabled
Interfaces => OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException
standard
Dynamic Library Support => enabled
Path to sendmail => /usr/sbin/sendmail -t -i
Directive => Local Value => Master Value
assert.active => 1 => 1
assert.bail => 0 => 0
assert.callback => no value => no value
assert.exception => 0 => 0
assert.quiet_eval => 0 => 0
assert.warning => 1 => 1
auto_detect_line_endings => 0 => 0
default_socket_timeout => 60 => 60
from => no value => no value
session.trans_sid_hosts => no value => no value
session.trans_sid_tags => a=href,area=href,frame=src,form= => a=href,area=href,frame=src,form=
url_rewriter.hosts => no value => no value
url_rewriter.tags => form= => form=
user_agent => no value => no value
sysvmsg
sysvmsg support => enabled
Revision => $Id: 73c7c7668de72405a739f837dc62fd6ce8e5eba6 $
sysvsem
Version => 7.2.19-1+ubuntu16.04.1+deb.sury.org+1
sysvshm
Version => 7.2.19-1+ubuntu16.04.1+deb.sury.org+1
tokenizer
Tokenizer Support => enabled
wddx
WDDX Support => enabled
WDDX Session Serializer => enabled
xml
XML Support => active
XML Namespace Support => active
libxml2 Version => 2.9.4
xmlreader
XMLReader => enabled
xmlwriter
XMLWriter => enabled
xsl
XSL => enabled
libxslt Version => 1.1.28
libxslt compiled against libxml Version => 2.9.3
EXSLT => enabled
libexslt Version => 1.1.28
Zend OPcache
Opcode Caching => Disabled
Optimization => Disabled
SHM Cache => Enabled
File Cache => Disabled
Startup Failed => Opcode Caching is disabled for CLI
Directive => Local Value => Master Value
opcache.blacklist_filename => no value => no value
opcache.consistency_checks => 0 => 0
opcache.dups_fix => Off => Off
opcache.enable => On => On
opcache.enable_cli => Off => Off
opcache.enable_file_override => Off => Off
opcache.error_log => no value => no value
opcache.file_cache => no value => no value
opcache.file_cache_consistency_checks => 1 => 1
opcache.file_cache_only => 0 => 0
opcache.file_update_protection => 2 => 2
opcache.force_restart_timeout => 180 => 180
opcache.huge_code_pages => Off => Off
opcache.inherited_hack => On => On
opcache.interned_strings_buffer => 8 => 8
opcache.lockfile_path => /tmp => /tmp
opcache.log_verbosity_level => 1 => 1
opcache.max_accelerated_files => 10000 => 10000
opcache.max_file_size => 0 => 0
opcache.max_wasted_percentage => 5 => 5
opcache.memory_consumption => 128 => 128
opcache.opt_debug_level => 0 => 0
opcache.optimization_level => 0x7FFFBFFF => 0x7FFFBFFF
opcache.preferred_memory_model => no value => no value
opcache.protect_memory => 0 => 0
opcache.restrict_api => no value => no value
opcache.revalidate_freq => 2 => 2
opcache.revalidate_path => Off => Off
opcache.save_comments => 1 => 1
opcache.use_cwd => On => On
opcache.validate_permission => Off => Off
opcache.validate_root => Off => Off
opcache.validate_timestamps => On => On
zip
Zip => enabled
Zip version => 1.15.4
Libzip headers version => 1.5.1
Libzip library version => 1.5.1
zlib
ZLib Support => enabled
Stream Wrapper => compress.zlib://
Stream Filter => zlib.inflate, zlib.deflate
Compiled Version => 1.2.8
Linked Version => 1.2.8
Directive => Local Value => Master Value
zlib.output_compression => Off => Off
zlib.output_compression_level => -1 => -1
zlib.output_handler => no value => no value
Additional Modules
Module Name
Environment
Variable => Value
AUTOJUMP_ERROR_PATH => /home/shahin/.local/share/autojump/errors.log
AUTOJUMP_SOURCED => 1
DISPLAY => :0.0
HADOOP_HOME => /data/big-data/hadoop-3.1.1
HIVE_HOME => /data/big-data/apache-hive-3.1.1-bin
HOME => /home/shahin
HUSHLOGIN => FALSE
JAVA_HOME => /usr/lib/jvm/java-8-openjdk-amd64/jre/
LANG => en_US.UTF-8
LANGUAGE => en_US:en
LC_ADDRESS => en_US.UTF-8
LC_CTYPE => en_US.UTF-8
LC_IDENTIFICATION => en_US.UTF-8
LC_MEASUREMENT => en_US.UTF-8
LC_MONETARY => en_US.UTF-8
LC_NAME => en_US.UTF-8
LC_NUMERIC => en_US.UTF-8
LC_PAPER => en_US.UTF-8
LC_TELEPHONE => en_US.UTF-8
LC_TIME => en_US.UTF-8
LESS => -XR
LOGNAME => shahin
LSCOLORS => Gxfxcxdxbxegedabagacad
LS_COLORS => rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
MAIL => /var/mail/shahin
OLDPWD => /home/shahin
PAGER => less
PATH => /home/shahin/.yarn/bin:/home/shahin/.config/yarn/global/node_modules/.bin:/home/shahin/.local/bin:/home/shahin/.cargo/bin:/home/shahin/.local/bin:/home/shahin/.cargo/bin:/home/shahin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/data/big-data/apache-hive-3.1.1-bin/bin:/data/big-data/hadoop-3.1.1/bin:/home/shahin/.composer/vendor/bin:/data/big-data/apache-hive-3.1.1-bin/bin:/data/big-data/hadoop-3.1.1/bin:/home/shahin/.composer/vendor/bin
PWD => /var/php/test
SHELL => /usr/bin/zsh
SHLVL => 2
SSH_AGENT_PID => 5060
SSH_AUTH_SOCK => /tmp/ssh-OsP6BEcUEkrZ/agent.5058
TERM => screen-256color
TMUX => /tmp/tmux-1000/default,5072,0
TMUX_PANE => %48
USER => shahin
WINDOWID => 50352361
XAUTHORITY => /home/shahin/.Xauthority
XDG_RUNTIME_DIR => /run/user/1000
XDG_SEAT => seat0
XDG_SESSION_COOKIE => 734088f6efa6490c9a34d12ac0195186-1560261886.324637-417365084
XDG_SESSION_ID => 1
XDG_VTNR => 1
ZSH => /home/shahin/.zsh
ZSH_TMUX_AUTOSTARTED => true
ZSH_TMUX_TERM => screen-256color
_ => /usr/bin/php
_ZSH_TMUX_FIXED_CONFIG => /home/shahin/.zsh/plugins/tmux/tmux.extra.conf
YSU_VERSION => 1.1.0
BROWSER => firefox --new-tab
EDITOR => vim
SSH_KEY_PATH => ~/.ssh/rsa_id
GPG_TTY => /dev/pts/7
GROFF_NO_SGR => 1
PHP Variables
Variable => Value
$_SERVER['AUTOJUMP_ERROR_PATH'] => /home/shahin/.local/share/autojump/errors.log
$_SERVER['AUTOJUMP_SOURCED'] => 1
$_SERVER['DISPLAY'] => :0.0
$_SERVER['HADOOP_HOME'] => /data/big-data/hadoop-3.1.1
$_SERVER['HIVE_HOME'] => /data/big-data/apache-hive-3.1.1-bin
$_SERVER['HOME'] => /home/shahin
$_SERVER['HUSHLOGIN'] => FALSE
$_SERVER['JAVA_HOME'] => /usr/lib/jvm/java-8-openjdk-amd64/jre/
$_SERVER['LANG'] => en_US.UTF-8
$_SERVER['LANGUAGE'] => en_US:en
$_SERVER['LC_ADDRESS'] => en_US.UTF-8
$_SERVER['LC_CTYPE'] => en_US.UTF-8
$_SERVER['LC_IDENTIFICATION'] => en_US.UTF-8
$_SERVER['LC_MEASUREMENT'] => en_US.UTF-8
$_SERVER['LC_MONETARY'] => en_US.UTF-8
$_SERVER['LC_NAME'] => en_US.UTF-8
$_SERVER['LC_NUMERIC'] => en_US.UTF-8
$_SERVER['LC_PAPER'] => en_US.UTF-8
$_SERVER['LC_TELEPHONE'] => en_US.UTF-8
$_SERVER['LC_TIME'] => en_US.UTF-8
$_SERVER['LESS'] => -XR
$_SERVER['LOGNAME'] => shahin
$_SERVER['LSCOLORS'] => Gxfxcxdxbxegedabagacad
$_SERVER['LS_COLORS'] => rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
$_SERVER['MAIL'] => /var/mail/shahin
$_SERVER['OLDPWD'] => /home/shahin
$_SERVER['PAGER'] => less
$_SERVER['PATH'] => /home/shahin/.yarn/bin:/home/shahin/.config/yarn/global/node_modules/.bin:/home/shahin/.local/bin:/home/shahin/.cargo/bin:/home/shahin/.local/bin:/home/shahin/.cargo/bin:/home/shahin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/data/big-data/apache-hive-3.1.1-bin/bin:/data/big-data/hadoop-3.1.1/bin:/home/shahin/.composer/vendor/bin:/data/big-data/apache-hive-3.1.1-bin/bin:/data/big-data/hadoop-3.1.1/bin:/home/shahin/.composer/vendor/bin
$_SERVER['PWD'] => /var/php/test
$_SERVER['SHELL'] => /usr/bin/zsh
$_SERVER['SHLVL'] => 2
$_SERVER['SSH_AGENT_PID'] => 5060
$_SERVER['SSH_AUTH_SOCK'] => /tmp/ssh-OsP6BEcUEkrZ/agent.5058
$_SERVER['TERM'] => screen-256color
$_SERVER['TMUX'] => /tmp/tmux-1000/default,5072,0
$_SERVER['TMUX_PANE'] => %48
$_SERVER['USER'] => shahin
$_SERVER['WINDOWID'] => 50352361
$_SERVER['XAUTHORITY'] => /home/shahin/.Xauthority
$_SERVER['XDG_RUNTIME_DIR'] => /run/user/1000
$_SERVER['XDG_SEAT'] => seat0
$_SERVER['XDG_SESSION_COOKIE'] => 734088f6efa6490c9a34d12ac0195186-1560261886.324637-417365084
$_SERVER['XDG_SESSION_ID'] => 1
$_SERVER['XDG_VTNR'] => 1
$_SERVER['ZSH'] => /home/shahin/.zsh
$_SERVER['ZSH_TMUX_AUTOSTARTED'] => true
$_SERVER['ZSH_TMUX_TERM'] => screen-256color
$_SERVER['_'] => /usr/bin/php
$_SERVER['_ZSH_TMUX_FIXED_CONFIG'] => /home/shahin/.zsh/plugins/tmux/tmux.extra.conf
$_SERVER['YSU_VERSION'] => 1.1.0
$_SERVER['BROWSER'] => firefox --new-tab
$_SERVER['EDITOR'] => vim
$_SERVER['SSH_KEY_PATH'] => ~/.ssh/rsa_id
$_SERVER['GPG_TTY'] => /dev/pts/7
$_SERVER['GROFF_NO_SGR'] => 1
$_SERVER['PHP_SELF'] =>
$_SERVER['SCRIPT_NAME'] =>
$_SERVER['SCRIPT_FILENAME'] =>
$_SERVER['PATH_TRANSLATED'] =>
$_SERVER['DOCUMENT_ROOT'] =>
$_SERVER['REQUEST_TIME_FLOAT'] => 1560764104.6718
$_SERVER['REQUEST_TIME'] => 1560764104
$_SERVER['argv'] => Array
(
)
$_SERVER['argc'] => 0
PHP License
This program is free software; you can redistribute it and/or modify
it under the terms of the PHP License as published by the PHP Group
and included in the distribution in the file: LICENSE
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
If you did not receive a copy of the PHP license, or have any
questions about PHP licensing, please contact license@php.net.
Note: I'm behind of a private network so I don't care about my ENV vars.
What is the expected behavior?
- For it to use a comparable amount of memory to Microsoft Excel.
Seriously! I'm sorry, you'll haver to use COM for that to be feasible, or possibly a commercial interface to a C library like libxl; PHPSpreadsheet is a pure PHP script, that (like all PHP scripts) uses zvals for data storage of any variable or property; if you want purely native datatypes, then using a pure PHP script is simply not an option.
Yes, PHPSpreadsheet uses a lot of memory, and I'm happy to discuss serious suggestions on how that could be reduced. There are options, such as cell caching, that can be used to reduce the memory footprint of a spreadsheet in memory; but "in-memory" means just that.
Are there any official recommendations of how much memory should be allocated for Excel files dependent on their size? I'd be happy to increase the allowed memory based on the file size, but I'm not sure what size we should set this to.
@ShahinSorkh That's quite the big comment. I had to scroll for a while. Ha. @MarkBaker That's reasonable. You're right, I shouldn't expect it to be the same as Excel. I just thought it seemed a little extreme in memory usage for such a small file with almost nothing in it. I understand though that there is a certain overhead associated with writing something in pure PHP. I just wasn't really sure if 177MB of memory for a simple 409KB file was normal or if it could be improved somehow and thought it should be addressed. Thank you for getting back to me.
The official recommendation mentioned in the documentation is 1k per cell (32-bit PHP) and 1.6k per cell (64-bit PHP), but that was under PHP 5.4; I've not made significant measures on PHP7. What can't be determined is memory requirements based on filesize; because Excel formats typically optimise storage requirements for the file (e.g. shared strings table, etc)
@MarkBaker 1k = 1000bytes per cell ? Is there any offical documentation for that ?
@UtechtDustin https://phpspreadsheet.readthedocs.io/en/latest/topics/memory_saving/#memory-saving
PhpSpreadsheet uses an average of about 1k per cell in your worksheets
This is:
What is the expected behavior?
For it to use a comparable amount of memory to Microsoft Excel. Opening excel with no file uses 7MB of memory. Opening the same file (409KB) on windows increases memory usage to 26MB.
What is the current behavior?
Loading a file increases memory usage by 177MB for a very small xlsx file and causes a fatal error due to memory exhaustion. My script uses 1MB before loading the file. It uses 178MB of memory immediately after loading the 409KB file.
What are the steps to reproduce?
Please provide a Minimal, Complete, and Verifiable example of code that exhibits the issue without relying on an external Excel file or a web server:
Output:
Before increasing the available memory for the script to 320MB, it would throw this error:
Which versions of PhpSpreadsheet and PHP are affected?
phpoffice/phpspreadsheet 1.6.0
Comment:
Thank you for your hard work in making a great PHP library. I look forward to all future improvements.