Votre application n'a pas envoyé de réponse HTTP dans le délai imparti par Cloudflare.
L'erreur Cloudflare 524 "A Timeout Occurred" indique que Cloudflare a réussi à établir une connexion TCP avec votre serveur, mais votre application n'a pas envoyé de réponse HTTP complète dans le temps imparti. Sur les plans Cloudflare gratuit à Business, ce timeout est fixé à 100 secondes et ne peut pas être modifié.
Contrairement aux erreurs 521, 522, et 523 qui sont des problèmes de connectivité, le 524 est un problème applicatif : votre code met trop de temps à s'exécuter. Cela peut être dû à des scripts PHP lents, des requêtes base de données non optimisées, des appels à des API externes bloquants, ou des traitements batch trop volumineux.
Ce guide explore les causes du 524, les techniques de profiling pour identifier les goulots d'étranglement, et les patterns architecturaux (traitement asynchrone, webhooks) pour gérer les opérations longues sans déclencher de timeout. L'objectif est de garder toutes vos réponses web sous la barre des 100 secondes.
Le timeout 524 survient quand votre application dépasse les 100 secondes de traitement :
Identifier quelle partie de votre code dépasse le timeout nécessite du profiling :
L'approche dépend de la nature de l'opération qui timeout :
Voici un pattern PHP pour transformer une opération longue en traitement asynchrone :
file('csv');
// Creer un job avec statut "pending"
$job = ImportJob::create([
'file_path' => $file->store('imports'),
'status' => 'pending',
'user_id' => auth()->id(),
]);
// Dispatcher vers la queue (ne bloque pas)
dispatch(new ProcessImport($job));
// Retourner immediatement
return response()->json([
'job_id' => $job->id,
'status_url' => url("/api/import/{$job->id}/status"),
], 202); // 202 Accepted
}
// Endpoint pour verifier le statut
public function checkStatus(string $jobId): Response
{
$job = ImportJob::findOrFail($jobId);
return response()->json([
'status' => $job->status, // pending, processing, completed, failed
'progress' => $job->progress_percent,
'result_url' => $job->status === 'completed' ? $job->result_url : null,
]);
}
Ce pattern retourne immédiatement un code 202 avec un job ID. Le client peut ensuite poller l'endpoint status pour suivre la progression. Quand le job est terminé, le résultat est disponible. Ce pattern évite tout timeout Cloudflare.
Adoptez ces bonnes pratiques pour éviter les timeouts :
Non sur les plans Free, Pro et Business. Seul le plan Enterprise permet d'augmenter le timeout jusqu'à 6000 secondes. La solution recommandée est d'optimiser votre application ou de passer au traitement asynchrone.
Dans les analytics Cloudflare, filtrez par code HTTP 524 pour voir les URLs concernées. Vous pouvez aussi activer le logging des temps de réponse dans Nginx pour identifier les requêtes longues côté serveur.
Oui, 202 Accepted signifie "requête acceptée pour traitement mais pas encore terminée". C'est le code HTTP standard pour les opérations asynchrones. Fournissez une URL de status pour que le client puisse suivre la progression.
Implémentez un système de retry avec backoff exponentiel. Marquez le job comme "failed" après N tentatives et notifiez l'utilisateur. Loggez les erreurs pour investigation.
Cloudflare Workers ont leur propre limite de CPU (50ms sur plan free), ils ne sont pas adaptés aux opérations longues. Ils sont utiles pour le edge computing, pas pour contourner les timeouts d'origine.
Oui, configurez une alerte sur le temps de réponse. Si votre endpoint met habituellement 5 secondes et monte à 50 secondes, MoniTao vous alerte avant d'atteindre les 100 secondes de Cloudflare.
L'erreur Cloudflare 524 est un signal que votre application a des opérations qui dépassent le timeout de 100 secondes. Contrairement aux autres erreurs Cloudflare 5xx qui sont des problèmes d'infrastructure, le 524 nécessite des modifications de code : optimisation, chunking, ou passage au traitement asynchrone.
Le pattern recommandé pour les opérations longues est de retourner immédiatement un code 202 avec un job ID, de traiter en arrière-plan, et de permettre au client de vérifier le statut. Combiné avec un monitoring MoniTao qui alerte sur les temps de réponse élevés, vous pouvez prévenir les erreurs 524 avant qu'elles n'impactent vos utilisateurs.
Commencez gratuitement, sans carte bancaire.