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

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