Problem: PHP ilə curl və ya file_get_contents istifadə edərək cbar.az XML API-sindən məzənnə çəkməyə çalışarkən bəzi serverlərdə timeout xətası olur:
və ya sadəcə boş cavab gəlir.
Səbəb:CBAR saytı (94.20.63.220) bəzi xarici data-center IP-lərindən gələn HTTPS sorğularını bloklayır. TCP bağlantısı qurulur, amma SSL handshake tamamlanmır. Nəticədə sorğu donur.
Yəni problem sizin kodunuzda deyil — server tərəfli blokdur.
Həll — Cloudflare Worker (pulsuz):
workers.cloudflare.com — pulsuz hesab açın.
Yeni Worker yaradıb bu JS kodunu yapışdırın:
Deploy etdikdən sonra sizə belə bir URL verilir:
PHP-də istifadə:
Kodunuzda yalnız URL-i dəyişin:
Kod (Code):
cURL error (28): Operation timed out after 10001 milliseconds
Səbəb:CBAR saytı (94.20.63.220) bəzi xarici data-center IP-lərindən gələn HTTPS sorğularını bloklayır. TCP bağlantısı qurulur, amma SSL handshake tamamlanmır. Nəticədə sorğu donur.
Yəni problem sizin kodunuzda deyil — server tərəfli blokdur.
Həll — Cloudflare Worker (pulsuz):
workers.cloudflare.com — pulsuz hesab açın.
Yeni Worker yaradıb bu JS kodunu yapışdırın:
JavaScript:
export default {
async fetch(request) {
const params = new URL(request.url).searchParams;
let date = params.get('date');
if (!date) {
const now = new Date(new Date().toLocaleString('en', { timeZone: 'Asia/Baku' }));
const d = String(now.getDate()).padStart(2, '0');
const m = String(now.getMonth() + 1).padStart(2, '0');
const y = now.getFullYear();
date = `${d}.${m}.${y}`;
}
const url = `https://www.cbar.az/currencies/${date}.xml`;
const resp = await fetch(url, { headers: { 'User-Agent': 'Mozilla/5.0' } });
const text = await resp.text();
return new Response(text, {
headers: {
'Content-Type': 'application/xml; charset=utf-8',
'Access-Control-Allow-Origin': '*',
'Cache-Control': 'public, max-age=3600',
}
});
}
}
Deploy etdikdən sonra sizə belə bir URL verilir:
Yüklənir......
cbar-proxy.your-name.workers.dev
PHP-də istifadə:
Kodunuzda yalnız URL-i dəyişin:
PHP:
// Əvvəl (işləmir):
$url = "https://www.cbar.az/currencies/" . $date . ".xml";
// Sonra (Worker vasitəsilə):
$url = "https://cbar-proxy.YOUR-NAME.workers.dev/?date=" . $date;