Hocam, en basit ve hızlı çözüm dosya tabanlı kilit mekanizması. Hem ekstra sistem kurulumuna gerek yok, hem de bir URL'nin aynı anda birden fazla işlem tarafından yeniden denenmesini kolayca engelleyebilirsin.
function fetchData($url, $maxRetries = 3, $retryDelay = 1000000) {
    $lockFile = sys_get_temp_dir() . '/lock_' . md5($url) . '.lock';

    // Lock dosyasını kontrol et
    if (file_exists($lockFile)) {
        echo "URL şu an işleniyor, bekle...\n";
        return false; // Başka bir işlem bu URL'yi işliyor
    }

    // Lock dosyasını oluştur
    file_put_contents($lockFile, "1");

    $retryCount = 0;
    $response = false;

    try {
        while ($retryCount < $maxRetries) {
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 5);
            $response = curl_exec($ch);
            $error = curl_errno($ch);
            curl_close($ch);

            if (!$error) {
                break; // Başarılı, döngüyü kır
            }

            $retryCount++;
            usleep($retryDelay); // Yeniden denemeden önce bekle
        }
    } finally {
        unlink($lockFile); // İş bitti, lock'u kaldır
    }

    return $response;
}
Uzun vadede daha büyük sistemlere geçersen, veritabanı ya da Redis gibi bir şey düşünebilirsin.