2016-10-27 4 views
2

各ドメインの列とCURLから各ドメインをフェッチして、右のものMySQLの列から各行をフェッチし、各ドメインをCURLし、新しいフェッチされたドメインを使用して行を変更する

例:example.test.com =>ドメインがアクセス可能であるかどうかを確認し、それは私が試してみました=>リダイレクトドメインを取得=>リダイレクトドメイン

でDBから既存のドメインを変更リダイレクトする場所を見つけますいくつかの擬似コードを実行しますが、私は順番にPHPとMySQLでの十分な経験を持っていないとして、私はまだこれを成し遂げるためにいくつかの助けを必要とする:あなたは私にいくつかのアドバイスを与えることができれば

// 1. Connect to DB 

// 2. Interogate DB and get an array which contains every URLs 

// 3. For each URL in the array call the getRedirectUrl($url) function with the URL as parameter 

// 4. Save URL in the DB 

$url = 'http://www.example.com'; 

function getRedirectedUrl($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_exec($ch); 

    $finalUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 

    return rtrim($finalUrl,'/'); 
} 


// Verify the response 

var_dump(getRedirectedUrl($url)); 

私は本当にいただければ幸いです!

+0

はあなたが私たちのテーブル名を教えてくださいすることができ、テーブル、およびカラム名に更新する$result

$dsn = 'mysql:host=localhost;dbname='.$dbname;//$dbName is the name of your database $user = 'root'; $pass = '123';//use your login information here $db = new PDO($dsn, $user,$pass); $query = "SELECT id, url FROM url_table"; $ps = $db->prepare($query); $ps->execute(); $result = $ps->fetchAll(PDO::FETCH_ASSOC);//this is a array with all your URLs to check 

反復と同じ接続を使用検索するには? –

+0

テーブル名:stores カラム:shop_url –

+0

SELECT id、shop_url FROMショップとUPDATEショップSET shop_url =:url WHERE id =:id。 dbのparamを本番環境の別のファイルに設定する必要があります –

答えて

1

ここにあなたの仕事を達成するためのアドバイスがあります。私は私の例に汎用名を使用しています。

使用PDO、データベースに接続する:あなたの

foreach ($result as $url) { 
    $newURL = getRedirectedUrl($url['url']); 
    $query = 'UPDATE url_table SET url = :url WHERE id=:id'; 
    $ps = $db->prepare($query); 
    $ps->bindParam(':url', $newURL); 
    $ps->binParam(':id', $url['id']); 
    $ps->execute(); 
} 
関連する問題