Foros del Web » Programando para Internet » PHP »

Porque no funciona esto?

Estas en el tema de Porque no funciona esto? en el foro de PHP en Foros del Web. Veran en un archivo llamado urls, tengo todas las url que quiero insertar en la db, de este modo: google.es,forosdelweb.com,google.com,facebook.com, etc... Intento que por cada ...
  #1 (permalink)  
Antiguo 27/04/2011, 10:28
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 3 meses
Puntos: 9
Porque no funciona esto?

Veran en un archivo llamado urls, tengo todas las url que quiero insertar en la db, de este modo:

google.es,forosdelweb.com,google.com,facebook.com, etc...

Intento que por cada url revisada la borre del archivo urls, pero no se porqué no se ejecuta :/
Código PHP:
$paginas file_get_contents("urls.php");
$explode explode(","$paginas);
foreach(
$explode as $search){
$guardar str_replace("".$search.",","",$paginas);
$archivo fopen("urls.php","w");
fwrite($archivo,$guardar);

  #2 (permalink)  
Antiguo 27/04/2011, 11:02
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Porque no funciona esto?

que error te marca???
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 27/04/2011, 11:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Porque no funciona esto?

Creo que la mejor forma de moverse es ingresando los datos en un array y borrar del array los datos. Luego insertarlos de nuevo al archivo que quieras.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 27/04/2011, 11:30
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 3 meses
Puntos: 9
Respuesta: Porque no funciona esto?

No me marca ningun error, se queda en blanco.

Os dejo el script completo:

Código PHP:
set_time_limit(0);
include(
"config.php");
function 
substring_between($haystack,$start,$end) { 
    if (
strpos($haystack,$start) === false || strpos($haystack,$end) === false) { 
        return 
false
    } else { 
        
$start_position strpos($haystack,$start)+strlen($start); 
        
$end_position strpos($haystack,$end); 
        return 
substr($haystack,$start_position,$end_position-$start_position); 
    } 

function 
url($url){
$fp=@fopen($url,"r");//Utilizamos fopen para abrir esa url
 
if($fp){//Si fopen abre la url
     
return true;
 }else{
//si no devuelve false
return false;
 }
@
fclose($fp);//Cerramos la conexion

$paginas file_get_contents("urls.php");
$explode explode(","$paginas);
foreach(
$explode as $search){
$reemplazar str_replace("http://","",$search);
$url "http://".$reemplazar."";
$urlq str_replace("http://","",$url);
if(
url($url)){
$pagina file_get_contents($url);
$text htmlspecialchars($pagina); 
$titulo substring_between($text,'<title>','</title>'); 
$meta get_meta_tags($url);
$result mysql_num_rows(mysql_query("SELECT * FROM resultados WHERE url = '".$urlq."'"));
if(
$result==0){
mysql_query("INSERT INTO resultados (nombre,url,descripcion,keywords) VALUES ('".$titulo."','".$urlq."','".$meta['description']."','".$meta['keywords']."')");
}
}
$guardar str_replace($search""$paginas);
$archivo fopen("urls.php","W+");
fwrite($archivo,$guardar);
fclose($archivo);

  #5 (permalink)  
Antiguo 27/04/2011, 11:32
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Porque no funciona esto?

El primer error esta al abrir el archivo urls.php cada vez que se ejecuta el ciclo, esto significa que abres el archivo varias veces y por tanto no se puede editar

El segundo error esta pues claro en que nunca lo cierras

El tercer error es que estas escribiendo en el archivo los resultados en cada ciclo! en otras palabras cada vez que se ejecuta el ciclo la lista es mas y mas larga.

pasemos al código, prueba así:

Código PHP:
Ver original
  1. $paginas = file_get_contents("urls.php");
  2. $explode = explode(",", $paginas);
  3. foreach($explode as $search){
  4. $guardar = str_replace("".$search.",","",$paginas);
  5. }  
  6. $archivo = fopen("urls.php","w");
  7. fwrite($archivo,$guardar);
  8. fclose($archivo);

recuerda que el ultimo elemento del archivo urls.php debe terminar en coma (,)
  #6 (permalink)  
Antiguo 27/04/2011, 11:52
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 3 meses
Puntos: 9
Respuesta: Porque no funciona esto?

Pues nada, no funciona, lo tengo asi:

Código PHP:
<?
set_time_limit
(0);
include(
"config.php");
function 
substring_between($haystack,$start,$end) { 
    if (
strpos($haystack,$start) === false || strpos($haystack,$end) === false) { 
        return 
false
    } else { 
        
$start_position strpos($haystack,$start)+strlen($start); 
        
$end_position strpos($haystack,$end); 
        return 
substr($haystack,$start_position,$end_position-$start_position); 
    } 

function 
url($url){
$fp=@fopen($url,"r");//Utilizamos fopen para abrir esa url
 
if($fp){//Si fopen abre la url
     
return true;
 }else{
//si no devuelve false
return false;
 }
@
fclose($fp);//Cerramos la conexion

$paginas file_get_contents("urls.php");
$explode explode(","$paginas);
foreach(
$explode as $search){
$reemplazar str_replace("http://","",$search);
$url "http://".$reemplazar."";
$urlq str_replace("http://","",$url);
$guardar str_replace("".$search.",","",$paginas); 
if(
url($url)){
$pagina file_get_contents($url);
$text htmlspecialchars($pagina); 
$titulo substring_between($text,'&lt;title&gt;','&lt;/title&gt;'); 
$meta get_meta_tags($url);
$result mysql_num_rows(mysql_query("SELECT * FROM resultados WHERE url = '".$urlq."'"));
if(
$result==0){
mysql_query("INSERT INTO resultados (nombre,url,descripcion,keywords) VALUES ('".$titulo."','".$urlq."','".$meta['description']."','".$meta['keywords']."')");
}
}
}
$archivo fopen("urls.php","w"); 
fwrite($archivo,$guardar); 
fclose($archivo);
?>

Miren lo que pasa: http://178.63.125.173/robot.php

Debería quedarse cargando porque hay 1 millon de urls...

PD: Si quito $guardar = str_replace("".$search.",","",$paginas); y lo de abrir y editar carga, pero en el mundo que pongo eso no hace nada y se queda en blanco.

Última edición por SeaPirates; 27/04/2011 a las 12:29

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:25.