-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: use default cache store for cell caching
- Loading branch information
1 parent
aa01217
commit 72e9c2d
Showing
1 changed file
with
379 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,379 @@ | ||
<?php | ||
|
||
use Maatwebsite\Excel\Excel; | ||
|
||
return [ | ||
'exports' => [ | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Chunk size | ||
|-------------------------------------------------------------------------- | ||
| | ||
| When using FromQuery, the query is automatically chunked. | ||
| Here you can specify how big the chunk should be. | ||
| | ||
*/ | ||
'chunk_size' => 1000, | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Pre-calculate formulas during export | ||
|-------------------------------------------------------------------------- | ||
*/ | ||
'pre_calculate_formulas' => false, | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Enable strict null comparison | ||
|-------------------------------------------------------------------------- | ||
| | ||
| When enabling strict null comparison empty cells ('') will | ||
| be added to the sheet. | ||
*/ | ||
'strict_null_comparison' => false, | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| CSV Settings | ||
|-------------------------------------------------------------------------- | ||
| | ||
| Configure e.g. delimiter, enclosure and line ending for CSV exports. | ||
| | ||
*/ | ||
'csv' => [ | ||
'delimiter' => ',', | ||
'enclosure' => '"', | ||
'line_ending' => PHP_EOL, | ||
'use_bom' => false, | ||
'include_separator_line' => false, | ||
'excel_compatibility' => false, | ||
'output_encoding' => '', | ||
'test_auto_detect' => true, | ||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Worksheet properties | ||
|-------------------------------------------------------------------------- | ||
| | ||
| Configure e.g. default title, creator, subject,... | ||
| | ||
*/ | ||
'properties' => [ | ||
'creator' => '', | ||
'lastModifiedBy' => '', | ||
'title' => '', | ||
'description' => '', | ||
'subject' => '', | ||
'keywords' => '', | ||
'category' => '', | ||
'manager' => '', | ||
'company' => '', | ||
], | ||
], | ||
|
||
'imports' => [ | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Read Only | ||
|-------------------------------------------------------------------------- | ||
| | ||
| When dealing with imports, you might only be interested in the | ||
| data that the sheet exists. By default we ignore all styles, | ||
| however if you want to do some logic based on style data | ||
| you can enable it by setting read_only to false. | ||
| | ||
*/ | ||
'read_only' => true, | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Ignore Empty | ||
|-------------------------------------------------------------------------- | ||
| | ||
| When dealing with imports, you might be interested in ignoring | ||
| rows that have null values or empty strings. By default rows | ||
| containing empty strings or empty values are not ignored but can be | ||
| ignored by enabling the setting ignore_empty to true. | ||
| | ||
*/ | ||
'ignore_empty' => false, | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Heading Row Formatter | ||
|-------------------------------------------------------------------------- | ||
| | ||
| Configure the heading row formatter. | ||
| Available options: none|slug|custom | ||
| | ||
*/ | ||
'heading_row' => [ | ||
'formatter' => 'slug', | ||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| CSV Settings | ||
|-------------------------------------------------------------------------- | ||
| | ||
| Configure e.g. delimiter, enclosure and line ending for CSV imports. | ||
| | ||
*/ | ||
'csv' => [ | ||
'delimiter' => null, | ||
'enclosure' => '"', | ||
'escape_character' => '\\', | ||
'contiguous' => false, | ||
'input_encoding' => 'UTF-8', | ||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Worksheet properties | ||
|-------------------------------------------------------------------------- | ||
| | ||
| Configure e.g. default title, creator, subject,... | ||
| | ||
*/ | ||
'properties' => [ | ||
'creator' => '', | ||
'lastModifiedBy' => '', | ||
'title' => '', | ||
'description' => '', | ||
'subject' => '', | ||
'keywords' => '', | ||
'category' => '', | ||
'manager' => '', | ||
'company' => '', | ||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Cell Middleware | ||
|-------------------------------------------------------------------------- | ||
| | ||
| Configure middleware that is executed on getting a cell value | ||
| | ||
*/ | ||
'cells' => [ | ||
'middleware' => [ | ||
//\Maatwebsite\Excel\Middleware\TrimCellValue::class, | ||
//\Maatwebsite\Excel\Middleware\ConvertEmptyCellValuesToNull::class, | ||
], | ||
], | ||
|
||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Extension detector | ||
|-------------------------------------------------------------------------- | ||
| | ||
| Configure here which writer/reader type should be used when the package | ||
| needs to guess the correct type based on the extension alone. | ||
| | ||
*/ | ||
'extension_detector' => [ | ||
'xlsx' => Excel::XLSX, | ||
'xlsm' => Excel::XLSX, | ||
'xltx' => Excel::XLSX, | ||
'xltm' => Excel::XLSX, | ||
'xls' => Excel::XLS, | ||
'xlt' => Excel::XLS, | ||
'ods' => Excel::ODS, | ||
'ots' => Excel::ODS, | ||
'slk' => Excel::SLK, | ||
'xml' => Excel::XML, | ||
'gnumeric' => Excel::GNUMERIC, | ||
'htm' => Excel::HTML, | ||
'html' => Excel::HTML, | ||
'csv' => Excel::CSV, | ||
'tsv' => Excel::TSV, | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| PDF Extension | ||
|-------------------------------------------------------------------------- | ||
| | ||
| Configure here which Pdf driver should be used by default. | ||
| Available options: Excel::MPDF | Excel::TCPDF | Excel::DOMPDF | ||
| | ||
*/ | ||
'pdf' => Excel::DOMPDF, | ||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Value Binder | ||
|-------------------------------------------------------------------------- | ||
| | ||
| PhpSpreadsheet offers a way to hook into the process of a value being | ||
| written to a cell. In there some assumptions are made on how the | ||
| value should be formatted. If you want to change those defaults, | ||
| you can implement your own default value binder. | ||
| | ||
| Possible value binders: | ||
| | ||
| [x] Maatwebsite\Excel\DefaultValueBinder::class | ||
| [x] PhpOffice\PhpSpreadsheet\Cell\StringValueBinder::class | ||
| [x] PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder::class | ||
| | ||
*/ | ||
'value_binder' => [ | ||
'default' => Maatwebsite\Excel\DefaultValueBinder::class, | ||
], | ||
|
||
'cache' => [ | ||
/* | ||
|-------------------------------------------------------------------------- | ||
| Default cell caching driver | ||
|-------------------------------------------------------------------------- | ||
| | ||
| By default PhpSpreadsheet keeps all cell values in memory, however when | ||
| dealing with large files, this might result into memory issues. If you | ||
| want to mitigate that, you can configure a cell caching driver here. | ||
| When using the illuminate driver, it will store each value in the | ||
| cache store. This can slow down the process, because it needs to | ||
| store each value. You can use the "batch" store if you want to | ||
| only persist to the store when the memory limit is reached. | ||
| | ||
| Drivers: memory|illuminate|batch | ||
| | ||
*/ | ||
'driver' => 'illuminate', | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Batch memory caching | ||
|-------------------------------------------------------------------------- | ||
| | ||
| When dealing with the "batch" caching driver, it will only | ||
| persist to the store when the memory limit is reached. | ||
| Here you can tweak the memory limit to your liking. | ||
| | ||
*/ | ||
'batch' => [ | ||
'memory_limit' => 60000, | ||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Illuminate cache | ||
|-------------------------------------------------------------------------- | ||
| | ||
| When using the "illuminate" caching driver, it will automatically use | ||
| your default cache store. However if you prefer to have the cell | ||
| cache on a separate store, you can configure the store name here. | ||
| You can use any store defined in your cache config. When leaving | ||
| at "null" it will use the default store. | ||
| | ||
*/ | ||
'illuminate' => [ | ||
'store' => null, | ||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Cache Time-to-live (TTL) | ||
|-------------------------------------------------------------------------- | ||
| | ||
| The TTL of items written to cache. If you want to keep the items cached | ||
| indefinitely, set this to null. Otherwise, set a number of seconds, | ||
| a \DateInterval, or a callable. | ||
| | ||
| Allowable types: callable|\DateInterval|int|null | ||
| | ||
*/ | ||
'default_ttl' => 10800, | ||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Transaction Handler | ||
|-------------------------------------------------------------------------- | ||
| | ||
| By default the import is wrapped in a transaction. This is useful | ||
| for when an import may fail and you want to retry it. With the | ||
| transactions, the previous import gets rolled-back. | ||
| | ||
| You can disable the transaction handler by setting this to null. | ||
| Or you can choose a custom made transaction handler here. | ||
| | ||
| Supported handlers: null|db | ||
| | ||
*/ | ||
'transactions' => [ | ||
'handler' => 'db', | ||
'db' => [ | ||
'connection' => null, | ||
], | ||
], | ||
|
||
'temporary_files' => [ | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Local Temporary Path | ||
|-------------------------------------------------------------------------- | ||
| | ||
| When exporting and importing files, we use a temporary file, before | ||
| storing reading or downloading. Here you can customize that path. | ||
| permissions is an array with the permission flags for the directory (dir) | ||
| and the create file (file). | ||
| | ||
*/ | ||
'local_path' => storage_path('framework/cache/laravel-excel'), | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Local Temporary Path Permissions | ||
|-------------------------------------------------------------------------- | ||
| | ||
| Permissions is an array with the permission flags for the directory (dir) | ||
| and the create file (file). | ||
| If omitted the default permissions of the filesystem will be used. | ||
| | ||
*/ | ||
'local_permissions' => [ | ||
// 'dir' => 0755, | ||
// 'file' => 0644, | ||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Remote Temporary Disk | ||
|-------------------------------------------------------------------------- | ||
| | ||
| When dealing with a multi server setup with queues in which you | ||
| cannot rely on having a shared local temporary path, you might | ||
| want to store the temporary file on a shared disk. During the | ||
| queue executing, we'll retrieve the temporary file from that | ||
| location instead. When left to null, it will always use | ||
| the local path. This setting only has effect when using | ||
| in conjunction with queued imports and exports. | ||
| | ||
*/ | ||
'remote_disk' => null, | ||
'remote_prefix' => null, | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Force Resync | ||
|-------------------------------------------------------------------------- | ||
| | ||
| When dealing with a multi server setup as above, it's possible | ||
| for the clean up that occurs after entire queue has been run to only | ||
| cleanup the server that the last AfterImportJob runs on. The rest of the server | ||
| would still have the local temporary file stored on it. In this case your | ||
| local storage limits can be exceeded and future imports won't be processed. | ||
| To mitigate this you can set this config value to be true, so that after every | ||
| queued chunk is processed the local temporary file is deleted on the server that | ||
| processed it. | ||
| | ||
*/ | ||
'force_resync_remote' => null, | ||
], | ||
]; |