Jump to content
php.lv forumi

Kā realizēt CURL konstanšu/parametru glabāšanu txt failā?


404
 Share

Recommended Posts

Ir grabberītis,kas izmantojot CURL ievāc saturu no uzdotās adreses.Gribētos uzlabot,lai varētu to darīt no vairākām adresēm vienlaicīgi,bet katrai vajag atšķirīgus curl_setopt uzstādījumus.Katrai adresei rakstīt savu setopt funkciju nelikās prātīgi,tāpēc radās doma izveidot config failiņus,no kuriem šos uzstādījumus nolasīt,un pēc vajadzības dinamiski pārrakstīt.Doma bija darīt kaut kā šādi:

 

conf.txt saturs:

CURLOPT_CONNECTTIMEOUT|20
CURLOPT_TIMEOUT|20
CURLOPT_HEADER|0
CURLOPT_AUTOREFERER|1
CURLOPT_FOLLOWLOCATION|0
CURLOPT_RETURNTRANSFER|1
CURLOPT_ENCODING|utf-8
CURLOPT_COOKIEJAR|cookie.txt
CURLOPT_COOKIEFILE|cookie.txt
CURLOPT_SSL_VERIFYPEER|0
CURLOPT_SSL_VERIFYHOST|0
CURLOPT_USERAGENT|Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

 

 

$configuration = file('sites/'.$site.'/conf.txt');  
$options = array();                                 
foreach($configuration as $row)
{
$parts         = explode('|', $row); 
$key           = ($parts[0]);   
$value         = ($parts[1]);  
$options[$key] = $value;      
}

$ch = curl_init( $url );
curl_setopt_array( $ch, $options ); 
$content = curl_exec( $ch );
$error   = curl_errno( $ch );
$errmsg  = curl_error( $ch );
$info    = curl_getinfo( $ch );

Tas neiet cauri.Masīvs ir,values ir,bet CURL paziņo: "Warning: curl_setopt_array(): Array keys must be CURLOPT constants or equivalent interger values." Cik saprotu,tad $options masīvā esošās atslēgas netiek uztvertas kā CURL konstantes.Kā viņas varētu padarīt šim redzamas? Mēģināju lasot masīvā šīs definēt kā konstantes,bet tad atkal paziņo,ka viņas jau ir: "Notice: Constant already defined"

eval($key) arī laikam neko nevar līdzēt. Kā šo vispār varētu dabūt gatavu?

Edited by 404
Link to comment
Share on other sites

define('TEST', 123);
echo eval('return TEST;');  // tā es rakstīju līdz šim
echo constant('TEST');  // tā es rakstīšu tagad! paldies, bubu :))

nu nu :D

ja nemaldos, pats man teici constant().. bet varbūt es maldos..

prostite za oftopik.

Link to comment
Share on other sites

Es pirms šī topika arī nezināju par tādu constant funkcijas esamību.

Kā mācēt šādu informāciju atrast? Ļoti vienkārši! Mums vajag kautko par konstantēm. Ok. Kā konstantes definē? Ar define funkciju. Skatamies un lasam tā dokumentāciju - http://php.net/define

See Also

defined() - Checks whether a given named constant exists

constant() - Returns the value of a constant

O, constant izkslausās kautkas interesants. Skatamies to: http://php.net/constant
Return the value of the constant indicated by name .

 

constant() is useful if you need to retrieve the value of a constant, but do not know its name. I.e. it is stored in a variable or returned by a function

Ideāli. Tieši tas, kas ir vajadzīgs. Ļoti vienkārši un neprasīja vairāk kā 1 minūti laika, lai šo atrastu un uzzinātu.
Link to comment
Share on other sites

btw šādos gadījumos ērti ir izmantot list

$parts         = explode('|', $row);
$key           = ($parts[0]);
$value         = ($parts[1]);

list($key, $value) = explode('|', $row);

 

...

Ideāli. Tieši tas, kas ir vajadzīgs. Ļoti vienkārši un neprasīja vairāk kā 1 minūti laika, lai šo atrastu un uzzinātu.

tur jau tā lieta, ka tik vnkāršas funkcijas kā define(), pats manuālī vairs neskaties ;)

bet vsp es arī daudz visādus tādus sīkumus iemācos, atbildot uz elementāriem jautājumiem. dažreiz sanāk, ka pa ceļam pats uzzinu vairāk nekā tas, kuram palīdzu :))

Edited by 2easy
Link to comment
Share on other sites

Nu šī nianse mani pārsteidza galīgi nesagatavotu.Esot pārliecībā,ka par it kā tik vienkāršu funkciju jau viss ir zināms,tika pēc kļūdas keywordiem problēma googlēta,aizmaldoties citā virzienā.Ikdienā,kamēr uz tādu lietu neuzraujas,tikmēr pat nojausmas nav.Tāpēc vien ir interesanti ko jaunu mēģināt,lai to uzzinātu.Būs kārtējā mācība,ka visbiežāk viss ir manuālī acu priekšā :D

Link to comment
Share on other sites

Es pirms šī topika arī nezināju par tādu constant funkcijas esamību.

Es ceru, ka tā bija ironija.

 

define('TEST', 123);
echo eval('return TEST;');  // tā es rakstīju līdz šim
echo constant('TEST');  // tā es rakstīšu tagad! paldies, bubu :))

Diez vai aizdomātos *tā* lietot eval(). Paldies par ROFLMAO.

Link to comment
Share on other sites

smejies vesels ;)

mani posti bieži ir 50% joke. forši, ka izdodas arī kādu sasmīdināt :D

 

bet ja nopietni, tad php to funkciju ir tik daudz, ka dažreiz tiešām kko daru caur izpūtēju vai izgudroju savu riteni, lai gan php priekš tam ir gatava funkcija jau no php3 laikiem... piemēram, ar mysql_result() var uzreiz paņemt viena lauka vērtību, nevis fetchot array/object un tikai pēc tam ņemt to vērtību

Edited by 2easy
Link to comment
Share on other sites

smejies vesels ;)

mani posti bieži ir 50% joke. forši, ka izdodas arī kādu sasmīdināt :D

 

bet ja nopietni, tad php to funkciju ir tik daudz, ka dažreiz tiešām kko daru caur izpūtēju vai izgudroju savu riteni, lai gan php priekš tam ir gatava funkcija jau no php3 laikiem... piemēram, ar mysql_result() var uzreiz paņemt viena lauka vērtību, nevis fetchot array/object un tikai pēc tam ņemt to vērtību

Nu, jā. Arī Tavs ieraksts par if/switch bija varen' smieklīgs, kur Tu ieteici if/if/if vs. switch, nevis if/elseif/elseif vs switch. Cerams, ka vismaz atšķirību saproti.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...