Solved

stream_context_create can be used with cURL?

Posted on 2009-05-12
11
2,024 Views
Last Modified: 2012-05-06
Hi E's, the function stream_context_create can be used with cURL?

Regards, JC
0
Comment
Question by:Pedro Chagas
  • 6
  • 4
11 Comments
 
LVL 3

Author Comment

by:Pedro Chagas
ID: 24370338
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
 
LVL 3

Author Comment

by:Pedro Chagas
ID: 24373680
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
 
LVL 49

Accepted Solution

by:
Roonaan earned 450 total points
ID: 24391294
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
 
LVL 3

Author Comment

by:Pedro Chagas
ID: 24394373
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
 
LVL 49

Expert Comment

by:Roonaan
ID: 24394409
In the first. You aren't using CURL in the second script as far as I can tell.
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 3

Author Comment

by:Pedro Chagas
ID: 24406915
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
 
LVL 49

Expert Comment

by:Roonaan
ID: 24407019
No, you need them both.

-r-
0
 
LVL 3

Author Comment

by:Pedro Chagas
ID: 24407655
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
 
LVL 49

Expert Comment

by:Roonaan
ID: 24409847
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
 
LVL 3

Author Comment

by:Pedro Chagas
ID: 24410118
@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

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Popularity Can Be Measured Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for …
Consider the following scenario: You are working on a website and make something great - something that lets the server work with information submitted by your users. This could be anything, from a simple guestbook to a e-Money solution. But what…
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now