Jump to content
php.lv forumi

remote paarbaudiit failu


_siikais_

Recommended Posts

uz vairaakiem peec kaartas web serveriem jaapaarbauda vai existee konkreets php fails

http://$weblapa/scripts.php shaja agadiijumaa scripts.php , ja neexistee shis fails tad turpina ciklu kameer beidzaas webi.

peedeejasi variants ko esmu paarbaudiijsi ir shaads un arii vinjsh stradaa ljoti leeni

jo ja taads domeens nau aktiivs vinjsh gaida kameer ir no response.

ar fopen vispaar nekas nestradaa (vai arii es kko nemaaku).

 

Buushu ljoti pateiciigs ja kaads vareetu iedot variantu kas ir aatrdarbiigs un bez gljukiem...

 

 

 

function getheader ( $url )
{
$headers = get_headers ( $url, 1 );
return $headers['0'];
}


$query  = "SELECT web FROM webs";

$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
if (getheader("".$row['web']."/scripts.php")!='HTTP/1.1 200 OK')
{
echo "nekas nonotiek";
}
else
{
veicam darbiibu
}
}

Link to comment
Share on other sites

Lieto nevis get_headers fju, bet gan fsockopen un sūti manuāli GET pieprasījumu.

Labums tāds, ka fsockopen funkcijai ir iespējams norādīt taimoutu, tb laiku pēc kura tā pārtrauks savu darbību, ja neizdodās pieslēgties serverim. Ieliec taimouta vietā 1.0f vai 0.5f (mērvienība ir sekundes) un ātrumam vajadzētu būt labākam.

 

Vajag forumu pasērčot, pirms jaunus topikus veidot: http://php.lv/f/index.php?showtopic=5105

Link to comment
Share on other sites

ar get funkciju dabuunu visu infu par to failu, bet tagad ir cita probleema, ja maajas lapa stradaa uz rewrite engine pamata un vis skas ir aiz / ir variable tad shis variants neder, jo uzraadiis ka vienmeer ir shis fails. Ko taadaa gadiijumaa dariit?

edite nr1:

paljube man nekas nesanaak kaa esmu domaajis :D

luudzu uzmetiet kaads scripta piemeeru...

Edited by _siikais_
Link to comment
Share on other sites

atveert es vinju atveeru, bet no sakauma neko taa arii neiebraucu, bet kajau teicu tagad jau ta dabuuju visu to ko man vajag tikai ir probleema ar rewrite, tas izpauzhas taa..

piemeeram web lapai navigaacija ir nevis domeens/index.php?lapa=kkas bet domeens/kkas. Liidz ar toshis veids vienmeer atgriezh saturu, jo kkas vinjsh saprot ar konkreetu lapu kas jaaparadaa, un ja tadaa lapa nau vinjsh ielaadee def lapu. liidz ar to vienmeer atgriezh lapas saturu...

 

Lai labaak saprastu es uzraxtiishu kaa tas viss notiek...

No mana web servera notiek vaicaajumi uz citiem web serveriem, uz kuriem atrodas manis dotais fails scripts.php. Scripts.php izvada pliku skaitli piemeeram 55, kuru uzgjeneree ieksh scripts.php esoshais kods. Shie cipari var buut katram webserverim dazhaadi. Tad ik pa 3h mans cron job cheko shos failus uz visiem web serveriem ko esmu noraadijis ieksh DB, un pie veiksmiigas cipara dabuushanas ar file() paliidziibu ieraxta atpakalj DB shii briizha skaitli. Bet tagad saaakaas taas lielaakaas probleemas ar remote faila paarbaudi, ar to pashu kaut fsockopen, kaa arii rewrite engine. Lieta sekojosha, paarbaudiiju paarbaudiiju 6 dazhaadus veidus: 1) domeens kursh ir bez rewrite engine un uz kura shis fails ir (nau probleemu); 2) domeens kursh ir bez rewrite engine un uz kura shis fails neexistee (nau probleemu); 3) domeens kursh ir ar rewrite engine un uz kura shis fails ir (nau probleemu); 4) domeens kursh ir ar rewrite engine un uz kura shis fails nau (ir probleema - vinjsh uzraada ka fails ir, bet protams reaali ta afaila nau. Ir jau doma kaa tikt skaidriibaa vai tas faisl existee vai nee ar contenta saliidzinaashanas metodi, jo ja tas faisl atgriezh kautko vairaak nekaa plika cipara veertiibu tad tas fails nau), 5) domeens kursh vispar neexistee DNS ieraxtos (lielum lielaa probleema - uz sho fsockopen timouts nereagjee), 6) domeens kursh existee DNS ieraxtos bet webserveris neatbild (ar timout viss kaartiiba atgriezh peec 2 sec ka nevar nodibinaat konekciju)...

 

taads nu ir mans nelielais izklaasts :D

Link to comment
Share on other sites

Pričom tur kautkāds "rewrite engine"?? Tevi ir links uz to tavu scripts.php nu tad lietot to linku taisot GET/POST pieprasījumu uz to linku. Nesaprotu problēmu.

(ir probleema - vinjsh uzraada ka fails ir, bet protams reaali ta afaila nau

Kurš ir tas "viņš", kas to uzrāda?

 

Pret slikta DNS vārda ilgo lookapošanu var izlīdzēt ar šo te: http://lv2.php.net/gethostbyaddr#46869 RTFM, kā vienmēr vajag cītīgāk darīt :)

Link to comment
Share on other sites

nu dooh weblapu paarluuko nevisdomeens/lapa.php bet domeens/lapa

un ja nau taada lapa ko noraada domeenaa tad attieciigi vinjsh panjem defaulto lapu kas noraadiita, bet ja uz root atrodas konkreets fails shajaa gadiijumaa script.php kuru izsauca ar domeens/script.php tad vinjsh vinju panjem un neuzraada 404. respektiivi sanaak ka 404 ar rewrite mod nevar dabuut ja arii izsauktais fails neeksistee

Link to comment
Share on other sites

Goda vārds joprojām nesaprotu kāds tur sakars ar mod_rewrite...

Tev tipa ir $adrese = "http://domēns/lapa"; Pareizi?

Nu tad attiecīgi taisi "GET /lapa" pieprasījumu uz "domēns" adresi.

 

Tas, ka webserveris nokonfigurēts servēt defaulto skripts.php skriptu, ja pieprasa direktorijas indeksu - to jau tavs skripts nevar kontrolēt. Tur tikai vienīgi var līdzēt tā domēns/lapa webservera konfigurācijas mainīšana. Tb no klienta puses domēns/lapa ir ļoti valīds urlis, pat ja lapa ir direktorija nevis skripts. Tā webā tas notiek.

Link to comment
Share on other sites

blaa tur jau taa lieta ka tas scripts atrodas uz manis neaistiitiem serveriem, taapeec nenotiek noraade kads buus linjks. Instrukcijaas ir noraadiits ka tam faila buus jaastaav uz root foldera, liidz ar to ja clientam ir weblapa ar mod rewrite un vinjsh to failu nau uzlicis pareizi scripts uzskatiis ka tas fails ir, pats pameegjini

 

 

index.php

$varss = @$_GET['vars'];
$vars = explode('/',$varss);
$lapa= $_GET['page'] = $vars[0];
$darbiba= $_GET['action'] = @$vars[1];
$darbiba1= $_GET['action2'] = @$vars[2];
$darbiba2= $_GET['action3'] = @$vars[3];
$darbiba3= $_GET['action4'] = @$vars[4];
 unset($_GET['vars']);


if (file_exists("lapa/$lapa.php")) {
	include("lapa/$lapa.php");
}else {
include("lapa/index.php");
}

htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?vars=$1 [L,QSA]

 

ja mainiigais lapa nau kaa $lapa.php vinjsh ielaadee def index.php

 

liidz ar to sanak ka ja tas konkreetais fails nau uz root vinjsh meegjina ielaadeet failu scripts.php.php kursh noteikti nau ieksh lapa foldera

Edited by _siikais_
Link to comment
Share on other sites

Saproti, ka klients (browseris, curl, tavs skripts ar fsockopen, whatever...) neko nevar zināt un saprast par failu/folderu struktūru uz webservera.

Webserveris web adreses virtualizē. Tb izliekās, ka tie ir faili vai folderi. Tu to nevari zināt - vai tas ir fails, vai folderis, vai dati no atmiņas izvadīti outputā. Nevar un viss. Webserveris tos var pārveidot un izlikties par ko vien tīk.

 

Raksti tam klientam, ka viņam līka mod_rewrite konfigurācija un lai tajā ieraksta /skripts.php kā izņēmumu. Nekas cits no klienta gala tev nespīd. Ja nu vienīgi tu 100% zini tā skripts.php output, nu un tad arī paskaties vai outputa formāts atbilst nolasītajam. Ja neatbilst (vai arī 404) - tad tas nozīmē, ka skripts.php līki uzstādīts uz klienta webservera.

Link to comment
Share on other sites

×
×
  • Create New...