[PHP] cURL request lukt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bio
  • Registratie: Oktober 2004
  • Laatst online: 21-07 23:16
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 function get_url( $url )
{
    $ch = curl_init();

    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, "osiris.txt" );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_HEADER, 1);
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); 

    $content = curl_exec( $ch );
    curl_close ( $ch );

    return $content;
}

print get_url("https://url.nl:4446/map/file.do");


Ik heb een lastig probleem met bovenstaand stuk code. Op mijn localhost werkt het naar behoren, maar zodra ik het upload wordt de pagina niet meer geladen. Ik krijg dus geen errors ofzo, maar hij blijft gewoon oneindig laden.

Ik heb hierover ook al contact gehad met mijn hosting. Zij hebben het volgende gedaan:

- Het domein gepingd waar cURL verbinding mee moet maken, het is bereikbaar vanaf mijn server.
- Curl met SSL zijn geinstalleerd, dit is gecheckt.
- De poort 4446 is opengezet.

Als ik de url verander naar een andere url met ook een afwijkende poort, en https werkt het weer wel. Volgens mij heb ik het probleem dus al aardig beperkt, maar ik heb geen idee meer over hoe ik dit nu nog kan oplossen. Waar kan hier het probleem zitten? Ik hoop dat iemand mij kan helpen!

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Op je externe server even error_reporting en display_errors aanzetten en dan de gebruikelijke debugstappen volgen? Je zal dan in elk geval output krijgen en hopelijk een foutmelding.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • haneev
  • Registratie: November 2005
  • Laatst online: 04-09 16:01
Misschien nog verifyhost nog uitschakelen?
PHP:
1
2
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);

Daarnaast kan je ook de curl error uitlezen met curl_error
PHP:
1
2
$error = curl_error($ch);
var_dump($error);


verder kan debug proces versnellen met de timeouts beter instellen :)
PHP:
1
2
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($ch,CURLOPT_TIMEOUT,30);

[ Voor 16% gewijzigd door haneev op 21-04-2011 12:17 ]


Acties:
  • 0 Henk 'm!

  • Bio
  • Registratie: Oktober 2004
  • Laatst online: 21-07 23:16
Error_reporting staat op E_ALL, en Display_errors op 1. Maar er zijn geen errors.

VERIFYHOST had ik al eens geprobeerd, en nu nog een keer voor de zekerheid, maar ook dat bied geen oplossing.

Ik heb nu ook de TIMEOUT opties toegevoegd, en ik print de curl_error, maar die geeft gewoon het volgende weer, wat nogal obvious is:

code:
1
string(20) "connect() timed out!"


Nog geen oplossing dus :/

[ Voor 3% gewijzigd door Bio op 21-04-2011 13:13 ]


Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 20:40
Heb je eventueel ook CURLOPT_PORT al proberen te gebruiken. Ik las hier en daar dat dit ook nog weleens wil helpen...

Daarnaast lijkt het mij dat het aan de hoster ligt.

Acties:
  • 0 Henk 'm!

  • Bio
  • Registratie: Oktober 2004
  • Laatst online: 21-07 23:16
alex3305 schreef op donderdag 21 april 2011 @ 13:30:
Heb je eventueel ook CURLOPT_PORT al proberen te gebruiken. Ik las hier en daar dat dit ook nog weleens wil helpen...

Daarnaast lijkt het mij dat het aan de hoster ligt.
Dit maakt ook geen verschil. En ik heb nu een ander domein geprobeerd te benaderen ook via poort 4446 en dat werkte wel, dus de poort staat ook echt open.

Maar het lijkt mij ook dat het aan de hoster ligt als het op andere plekken wel werkt. Echter geeft de hoster aan dat hij het ook niet meer weet. Hoe gaat zoiets eigenlijk in zijn werk? Kan ik van hem eisen dat hij het debugt en oplost? Dat lijkt me eigenlijk ook weer raar.

Dus meer suggesties voor oplossingen zijn nog steeds welkom! Iedereen alvast bedankt voor het meedenken.

Acties:
  • 0 Henk 'm!

  • Bio
  • Registratie: Oktober 2004
  • Laatst online: 21-07 23:16
Inmiddels is het probleem verholpen. Bedankt voor de feedback iedereen. Het lag inderdaad toch bij de host, en na wat prutsen van zijn kant werkt het nu naar behoren. :)

Ik wil ook nog wel een andere vraag aan deze post plakken: Het script wil ik met een cronjob laten draaien, om als een soort rss feed van een bepaalde website te gebruiken die deze functionaliteit niet bied. Ik heb het idee dat er best een groep gebruikers van die website zou zijn die hierin ook interesse hebben. Misschien wel een paar duizend.

Maar kan ik dat zomaar doen, of ga ik dan die server teveel belasten? Is dat bijvoorbeeld eigenlijk verboden?
Stel ik zou het script openbaar maken, hoe zou ik dat dan moeten aanpakken? Of moet ik dat gewoon voor mezelf houden?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Spul dat je van andere servers haalt zul je altijd willen cachen. En dan maakt het niet uit of je 1, 10, 100 of 100.000 bezoekers hebt.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Bio
  • Registratie: Oktober 2004
  • Laatst online: 21-07 23:16
NMe schreef op dinsdag 26 april 2011 @ 14:26:
Spul dat je van andere servers haalt zul je altijd willen cachen. En dan maakt het niet uit of je 1, 10, 100 of 100.000 bezoekers hebt.
In principe heb je gelijk, maar in dit geval niet, denk ik? Want elke gebruiker heeft een unieke tabel met gegevens, en er moet via een aantal stappen ingelogd worden met curl om deze tabel uit te lezen.

Het idee is dus om de tabel op te slaan, en dan een x aantal keer per dag deze opnieuw op te halen, en dan kijken of hij veranderd is en evt. de nieuwe versie van de tabel opslaan.

Maar voor elke gebruiker is de tabel dus verschillend...

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 00:33

MueR

Admin Tweakers Discord

is niet lief

Jo-hannes schreef op dinsdag 26 april 2011 @ 14:21:
Maar kan ik dat zomaar doen, of ga ik dan die server teveel belasten?
Als je het niet cached ga je die mogelijkheid wel hebben ja.
Is dat bijvoorbeeld eigenlijk verboden?
Afhankelijk van wat je doet. Als je content kopieert naar een RSS feed zou die site daar best eens flink van kunnen balen. Je wil in ieder geval eerst toestemming vragen aan de eigenaar van de site en ook eea afspreken over de frequentie waarmee je content ophaalt. Anders zou je zomaar ineens een IP kan kunnen krijgen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
haneev schreef op donderdag 21 april 2011 @ 12:16:
Misschien nog verifyhost nog uitschakelen?
PHP:
1
2
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
Imo kun je beter gewoon verwijzen naar dat standaard setje certificaten, anders doe je het nut van de https een beetje teniet ;)
Pagina: 1