• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2513
  • Last Modified:

stream_context_create can be used with cURL?

Hi E's, the function stream_context_create can be used with cURL?

Regards, JC
0
Pedro Chagas
Asked:
Pedro Chagas
  • 6
  • 4
1 Solution
 
Pedro ChagasWebmasterAuthor Commented:
Hi E's, I made this question because I use the function stream_context_create:
================================
$url = "http://www.example.com/eeee/file.html";
$ctx = stream_context_create(array('http'=>array('timeout'=>1)));
$page = @file_get_contents($url, 0, $ctx);
if($page===false)
  echo 'not connect';
else
  echo 'connect';
===============================
Code above workly perfect
But if I use inside cURL like you can see in snippet code, the script don't work.

Maybe the problem not is the cURL, maybe is something wrong in my code.
//THE PAGE THAT CALL cURL
$URI = "http://www.example.com/tp_coneccao.php?url=$normurl&&palavra=$texto";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URI);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$apires = curl_exec($ch);
curl_close($ch);
 
//CODE EXECUTED IN cURL
include ("database.php");
$url_actual = $_GET['url']; 
$palavra_actual = $_GET['palavra']; 
$ctx = stream_context_create(array('http'=>array('timeout'=>1)));
$page = @file_get_contents($url_actual, 0, $ctx);
if ($page===false) { 
	mysql_query("update urls set chec=1, testeconecao=0 where urlhost='$url_actual' and palavra='$palavra_actual'", $db); 
	} else { //existe coneccao
	mysql_query("update urls set chec=1, testeconecao=1 where urlhost='$url_actual' and palavra='$palavra_actual'", $db); 
		}

Open in new window

0
 
Pedro ChagasWebmasterAuthor Commented:
hi e's, maybe the question is confuse, i try simplify the question:
in snippet code you can see two scripts, in the first i have some urls from a database (like - http://www.example.com/file.html), i do a while to prepare all urls for the function in curl. that urls will be treatement in the second script, where i use 'stream_context_create' for check the connections of each url.
the problem is that don't work!!!

i don't know if the problem was run the function 'stream_context_create' in curl, or the problem is the 'while', maybe was the 'variables', or other thing. so, because i don't know where is the problem, i open this question.

regards, jc
0
 
RoonaanCommented:
stream_context_create is not related to curl. Curl has its own methods of setting timeouts. You can use curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
Pedro ChagasWebmasterAuthor Commented:
hi @Roonaa, thanks for your feedback!
but where i substitute the code, where i put curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); in first or in second script?

regards, jc
0
 
RoonaanCommented:
In the first. You aren't using CURL in the second script as far as I can tell.
0
 
Pedro ChagasWebmasterAuthor Commented:
Hello again, So, I have to substitute this line in my code?
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); for: curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);?

Regards, JC
0
 
RoonaanCommented:
No, you need them both.

-r-
0
 
Pedro ChagasWebmasterAuthor Commented:
Hi, with the add of that line the script continue don't work!
The issue is maybe in other place.

Attention: The script work well without cURL. They work well if I execute everything in the same file, without 'curl_setopt'.
I don't do in the same file because I use cURL for take the data more fast.

Please help.

Regards, JC
//the file tp_relatorio.php contain now (with the new line of cURL):
$urlc_result = mysql_query("SELECT * FROM urls where palavra = '$palavradb'", $db);
$urlc_rows = mysql_num_rows($urlc_result);
while($urlc = mysql_fetch_object($urlc_result)) {
	$normurl = $urlc->urlhost;
	$URI = "http://www.example.com/tp_coneccao.php?url=$normurl&&palavra=$texto";
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $URI);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); //the new line
		$apires = curl_exec($ch);
		curl_close($ch);
		//echo $apires;
		//echo "<br>\n";
 
//the file tp_coneccao.php contain
include ("database.php");
$url_actual = $_GET['url']; 
$palavra_actual = $_GET['palavra']; 
$ctx = stream_context_create(array('http'=>array('timeout'=>1)));
$page = @file_get_contents($url_actual, 0, $ctx);
if ($page===false) { 
        mysql_query("update urls set chec=1, testeconecao=0 where urlhost='$url_actual' and palavra='$palavra_actual'", $db); 
        } else { //existe coneccao
        mysql_query("update urls set chec=1, testeconecao=1 where urlhost='$url_actual' and palavra='$palavra_actual'", $db); 
                }
	}

Open in new window

0
 
RoonaanCommented:
What actually is it you are trying to achieve?

As far as I can tell you are calling a particular script from domain B from a script on domain A. domain A script uses curl for better download performance, while the actual downloading of external content happens in the domain B script. As domain A script only triggers the domain B script, but does not process the results, what would be the benefit of using curl?
0
 
Pedro ChagasWebmasterAuthor Commented:
@Roonaan, i use curl because i thing is more fast. everytime i call the script i have a lot of url's to check the connection, so i use curl to check all in simultain. maybe my idea about this is wrong, and i don't know if this scripts is the best solution for my goal.
please tell me something about this issue, if you have a great solution tell me.
what the script have to do is:
i have a lot of urls in db.
i call all results with a while.
in each while i go check if the connection is good for each url. (in this step i use the curl, but i'm not certain if it is the best solution).

regards, jc
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 6
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now