Скрыть объявление
Здравствуйте Гость! Не нашли ответа на свой вопрос? Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества и задайте свой вопрос! Вам обязательно помогут!

Как массово заменить ссылку во всех файлах на своем сервере

Тема в разделе "Сайтостроение, настройка и технические вопросы", создана пользователем kratur, 22 сен 2017.

  1. kratur

    kratur Пользователь

    Сообщения:
    2.894
    Симпатии:
    0
    В общем столкнулся с такой проблемой. Надо заменить ссылку в файлах на дорвеях на своем сервере.

    Т.е. чтобы на каждом файле в указанном каталоге повторялась такая процедура.

    Кто нибудь подскажет готовые решения какие нибудь?

    Вот думаю в сторону путти.

    В целом файлов думаю несколько миллионов. Стоит ли вообще с этим связываться, или при таком кол-ве файлов придется пару недель менять?

    Буду премного благодарен за дельные советы
     

  2. asfvanasf

    asfvanasf Пользователь

    Сообщения:
    4.270
    Симпатии:
    0
    Проще будет запустить на серве PHP-скрипт, который поменяет. С путти точно будешь пару недель возиться, ибо ведь нужен коннект к серваку, а инет работает точно медленнее жесткого диска
    Лучше на стороне серванта менять. Время выполнения прикинуть не могу... Нужно рекурсивно будет пройтись по дереву директорий и во всех файлах .html менять регуляркой одно на другое. Мне так кажется.
     
  3. sydoow

    sydoow Пользователь

    Сообщения:
    381
    Симпатии:
    0
    Я попросил админа, дал ему несколько баксов, он запустил чото там, и через несколько часов всё готово.
     
  4. goodw1n

    goodw1n Guest

    PHP:
    functionget_files($dir="."){if($handle=opendir($dir)){while(false!==($item=readdir($handle))){if(is_file("$dir/$item")){$pos=strpos($item,"htm");if($pos!=0){$r=fopen("$dir/$item",'r');//3$text=fread($r,filesize("$dir/$item"));$text=str_replace('что заменяем','на что заменяем',$text);fclose($r);$r=fopen("$dir/$item",'w');//3fwrite($r,$text);fclose($r);}}elseif(is_dir("$dir/$item")($item!=".")($item!="..")){get_files("$dir/$item");}}closedir($handle);}}
    только сегодня искал подобный скрипт. не нашел - пришлось собирать самому

    В догонку..

    PHP:
    ?
    $work_dir=./;
    //рабочая директория-обязательно должна заканчиваться
    //символом“/”
    $excl_dir=array();
    $excl_dir[0]=”./webstat/”;
    $excl_dir[1]=”./cgi-bin/”;
    //директории,гдепоиск/заменане производятся-обязательно должны заканчиваться
    //символом“/”
    $file_mask_1=.html”;
    $file_mask_2=.js”;
    //маски обрабатываемых файлов(будутобработанывсефайлы,
    //содержащие данную строку в имени)
    $search_str=”noindex/DIV”;#чтои щем
    $replace_str=/DIV”;#чем заменяем
    //******************************************************
    $level=0;
    functionsr($dir)
    {
    global
    $level,$file_mask_1,$file_mask_2,$search_str,$replace_str,$excl_dir;
    echo“b”;
    for(
    $i=0;$i$level;$i++)echo“**;
    echo
    $dir./b”;
    if(@
    in_array($dir,$excl_dir))
    {
    echo”-needn’tsearchreplacebr”;
    return;
    }
    echo“br”;
    $p=dir($dir);
    while(
    $ent=$p-read())
    {
    if(
    $ent!=.”$ent!=..!is_dir($dir.$ent)(eregi(sql_regcase($file_mask_1),$ent)||eregi(sql_regcase($file_mask_2),$ent)))
    {
    $tmp=@file($dir.$ent);
    $str=@implode(",$tmp);
    if(strpos(”@!#%xrenoder^*()”.
    $str,$search_str))
    {
    for(
    $i=0;$i($level)+1;$i++)echo“**“;
    echo
    $dir.$ent.”found…”;
    $str=str_replace($search_str,$replace_str,$str);
    if(
    $fp=@fopen($dir.$ent,“w”))
    {
    flock(
    $fp,LOCK_EX);
    fwrite(
    $fp,$str);
    fclose(
    $fp);
    echo”andreplacebr”;
    }
    elseecho”andbcan’treplace/bbr”;
    }
    }
    elseif(
    $ent!=”.”and$ent!=”..”andis_dir($dir.$ent))
    {
    $level++;
    sr(
    $dir.$ent.”/”);
    $level–;
    }
    }
    $p-close();
    return;
    }
    sr(
    $work_dir);
    echo“SEARCHREPLACEComplete”;
    ?
     
    Последнее редактирование: 18 фев 2018
Черновик сохранён Черновик удалён
Загрузка...