How can PHP developers optimize file upload scripts to prevent them from breaking?

To optimize file upload scripts and prevent them from breaking, PHP developers should set appropriate file size limits, validate file types, sanitize file names, and handle errors gracefully. Additionally, developers should consider implementing file upload progress indicators to improve user experience.

<?php
// Set maximum file size limit to 5MB
$maxFileSize = 5 * 1024 * 1024;

// Allowed file types
$allowedTypes = ['jpg', 'jpeg', 'png', 'gif'];

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
    $file = $_FILES['file'];

    // Validate file size
    if ($file['size'] > $maxFileSize) {
        echo "File size exceeds limit.";
        exit;
    }

    // Validate file type
    $fileExt = pathinfo($file['name'], PATHINFO_EXTENSION);
    if (!in_array(strtolower($fileExt), $allowedTypes)) {
        echo "Invalid file type.";
        exit;
    }

    // Sanitize file name
    $fileName = preg_replace("/[^A-Za-z0-9.]/", "", $file['name']);

    // Handle file upload
    if (move_uploaded_file($file['tmp_name'], "uploads/" . $fileName)) {
        echo "File uploaded successfully.";
    } else {
        echo "Error uploading file.";
    }
}
?>