Les fichiers temporaires sont créés sur un serveur lors de l'exportation en file d'attente
Bonjour, je lance mon application sur laravel vapor (serverless). Lors de l'exportation en file d'attente, les fichiers temporaires ne sont pas stockés sur le disque s3. Je suis bloqué là-dessus !
Pouvez-vous montrer ce que vous essayez, ne peut pas aider avec cette petite information.
@patrickbrouwers
'fichiers_temporaires' => [
/*
|--------------------------------------------------------------------------
| Local Temporary Path
|--------------------------------------------------------------------------
|
| When exporting and importing files, we use a temporary file, before
| storing reading or downloading. Here you can customize that path.
|
*/
'local_path' => storage_path('app/public'),
/*
|--------------------------------------------------------------------------
| 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' => 's3',
'remote_prefix' => null,
],
c'est mon fichier de configuration, ici je spécifie un disque distant pour les fichiers temporaires, mais les fichiers temporaires ne sont pas stockés sur ce disque
La configuration semble bonne. Je ne connais pas assez Vapor pour vous donner des pointeurs pour déboguer, mais peut-être que votre fichier de configuration est mis en cache ou quelque chose du genre. Peut-être que les gens sur Laracasts/Stackoverflow seront plus rapides pour vous aider.
@patrickbrouwers sur ma machine locale, ce problème arrive également - les fichiers temporaires ne sont pas stockés sur ce disque (s3)
Essayez de parcourir le code avec xdebug/dd() il y a probablement quelque chose qui ne va pas dans votre configuration que je ne peux pas voir
@patrickbrouwers J'ai trouvé un cas, les fichiers temporaires sont écrits sur le disque, mais la lecture de morceaux se produit, il ne prend pas le fichier temporaire de s3, un espoir ?
@patrickbrouwers c'est un problème similaire à celui de #2655
Essayez de définir ce paramètre de force sur true alors ?
@patrickbrouwers Je ne peux pas le faire. car mon problème est que, malheureusement, Vapor ne prend pas en charge le stockage de fichiers temporaires en cours de route.
Donc, peut-être que j'ai besoin d'un support pour quelque chose appelé sans serveur - c'est-à-dire des fichiers temporaires lus et écrits à partir de s3/n'importe quel disque lors de la lecture de morceaux
Je crois qu'il y a des gens qui l'utilisent sur Vapor sans problème
C'est l'erreur que je reçois sur la vapeur en essayant l'exportation en file d'attente
ErrorException : fopen(/tmp/storage/framework/laravel-excel/laravel-excel-0KCoC8o8oDS1zsMpu927nkeCTzRgCu1E.xlsx) : échec de l'ouverture du flux : aucun fichier ou répertoire de ce type dans /var/task/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/ Writer/BaseWriter. php:111
Trace de la pile:
Il semble toujours que quelque chose ne va pas avec votre configuration. Il n'utilise pas le bon chemin local, il utilise le dossier temporaire du système au lieu du dossier de stockage de Laravel.
@patrickbrouwers Larevel vapor utilise s3 comme stockage par défaut, mais laravel excel continue de lire à partir du système/serveur local,
@patrickbrouwers Y a-t-il une limitation technique empêchant de pouvoir lire le fichier directement depuis s3 ?
Oui, il sera toujours lu depuis le local après la copie depuis s3. PhpSpreadsheet ne peut lire qu'à partir du disque local
Avec une configuration correcte, cela devrait fonctionner très bien
@patrickbrouwers Dans la vapeur, il n'y a pas de serveurs... Aws lambda traite tout le code. Donc, peut-être que pour la prise en charge d'Excel en file d'attente, nous devons lancer un serveur et peut-être avoir besoin de l'exécuter en tant que micro-instance !
Je sais ce qu'est Vapor et serverless. Je vous suggère d'essayer Laracasts ou Stackoverflow, je ne pense pas que nous arrivions à quelque chose si vous n'essayez pas mes suggestions.
Je sais ce qu'est Vapor et serverless. Je vous suggère d'essayer Laracasts ou Stackoverflow, je ne pense pas que nous arrivions à quelque chose si vous n'essayez pas mes suggestions.
J'ai essayé vos suggestions et vérifié les configurations conformément à la documentation.
Les fichiers temporaires sont créés sur la première étape,
Mais quand nous arrivons au cas de lecture de feuille de calcul, cette erreur se produit.
De plus, une autre dépendance "Laravel snappy" a besoin de ce type de support de disque local.
Mais, ce boîtier de disque local ne fonctionnera pas dans mon cas !
Ainsi, lorsque j'ai contacté Vapor à propos de cette affaire, ils ont suggéré de stocker le fichier sur s3 et de le réutiliser. Que dois-je faire ?
J'espère que vous comprenez ma situation !
D'autres personnes ont pu utiliser un fichier local qui se synchronise avec s3. Je ne peux pas aider plus que ça, je suis désolé. Comme je l'ai suggéré à plusieurs reprises, essayez un forum lié à Laravel.
Voici un exemple de personne utilisant des exportations en file d'attente avec Vapor : https://github.com/Maatwebsite/Laravel-Excel/pull/2434
je vais essayer la solution ci-dessus
Voici un exemple de quelqu'un qui utilise des exportations en file d'attente avec Vapor : #2434
@patrickbrouwers Merci
je viens de changer
'local_path' => sys_get_temp_dir(),
dans excel.php
avec le disque distant, la vapeur fonctionnera comme ceci
Merci pour votre patience et vos suggestions.
@patrickbrouwers , ces fichiers temporaires créés par laravel-excel seront-ils automatiquement supprimés après un certain temps ? Que se passe-t-il si je définis cette valeur comme null
dans excel.php ?
Commentaire le plus utile
@patrickbrouwers Merci
je viens de changer
'local_path' => sys_get_temp_dir(),
dans excel.php
avec le disque distant, la vapeur fonctionnera comme ceci
Merci pour votre patience et vos suggestions.