FeedAPI és Drush

A FeedAPI 1.7beta2 már tartalmaz Drush integrációt. Aki nem hallott volna a Drush-ról, az nézzen utána! :) A Drush lehetővé teszi, hogy a Drupalt unix parancssorból rugdossuk. Alant szeretnék bemutatni egy módszert, ami sok feed esetén best effort módon minél több hírcsatorna frissítését lehetővé teszi, természetesen Drush segítségével. Sőőt, ez a kis vacak szkript valamilyen mértékig a párhuzamos végrehajtásról is gondoskodik. Fontoljuk meg, ugyanezt PHP-ban leprogramozni jelentősen problémásabb lenne (nincsenek szálaink, multithreading iszonyatos gányolásokkal imitálható). Nem is beszélve a timeout-ok és memory limitek okozta fejfájásról. Tehát a kis shell szkript:

cd /var/www/html/
while [ 1 ]
do
        i=0
        for nid in `echo "SELECT f.nid FROM feedapi f NATURAL JOIN node n  WHERE n.status = 1" |drush sql cli| grep ^[0-9]`
        do
                  echo "We are processing nid "$nid" now."
                  already=`ps aux | grep drush | grep $nid`
                  if [ -z "$already" ]; then
                    drush feedapi refresh $nid 2> /dev/null 1> /dev/null &
                    pids[$i]=$!
                    i=`expr $i + 1`
                  fi
                  if [ $i -eq 4 ]; then
                    wait ${pids[0]}
                    wait ${pids[1]}
                    wait ${pids[2]}
                    wait ${pids[3]}
                    i=0
                  fi
        done;
done;

Ugye nem bonyolult? Remélem hasznát veszitek!
Elindítani például a nohup php feedapi.sh & parancs segítségével lehet, így ki is lehet jelentkezni a szerverről és tovább fut!

Hozzászólások

Feedapi

Szia Áron,

sajnos nem találok Hozzád más utat, így itt írok. Van egy projektem a feedapi modullal, és szeretnék kooperálni Veled. Kérlek jelentkezz mielőbb a 70/291-2131 számon, vagy írj a maczko.krisztian kukac gmail.com címre.

Köszi - Krisztián

válasz

Írtam egy emailt.