Procurar
Palavras-chaves
Últimos assuntos
Tópicos mais visitados
Metodos PHP
2 participantes
Página 1 de 1
Metodos PHP
Lista 3. getUserTimeline()
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Twitter / myerman</title>
<link>http://twitter.com/myerman</link>
<description>Twitter updates from Thomas Myer / myerman.</description>
<language>en-us</language>
<ttl>40</ttl>
<item>
<title>myerman: just got my copy of groundswell...also,
just got back from seeing Taken. Liam Neeson kicks butt!</title>
<description>myerman: just got my copy of groundswell...also, just got back from
seeing Taken. Liam Neeson kicks butt!</description>
<pubDate>Sun, 01 Feb 2009 04:16:55 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1166126064</guid>
<link>http://twitter.com/myerman/statuses/1166126064</link>
</item>
<item>
<title>myerman: For those of us trying to learn
Objective-C - some libraries. http://tinyurl.com/dkaj4m</title>
<description>myerman: For those of us trying to learn
Objective-C - some libraries. http://tinyurl.com/dkaj4m</description>
<pubDate>Fri, 30 Jan 2009 20:06:13 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1162686918</guid>
<link>http://twitter.com/myerman/statuses/1162686918</link>
</item>
<item>
<title>myerman: RT @andyhunter Google Chief Economist
on innovation: Weâre in the middle of .. a period of âcombinatorial innovation.â
http://bit.ly/xgpN</title>
<description>myerman: RT @andyhunter Google Chief Economist
on innovation: Weâre in the middle of .. a period of âcombinatorial innovation.â
http://bit.ly/xgpN</description>
<pubDate>Fri, 30 Jan 2009 15:35:18 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1161902779</guid>
<link>http://twitter.com/myerman/statuses/1161902779</link>
</item>
<item>
<title>myerman: A-Team movie out next year? I love it when a plan comes together.
http://tinyurl.com/ahckx9</title>
<description>myerman: A-Team movie out next
year? I love it when a plan comes together.
http://tinyurl.com/ahckx9</description>
<pubDate>Thu, 29 Jan 2009 19:21:34 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1159386717</guid>
<link>http://twitter.com/myerman/statuses/1159386717</link>
</item>
<item>
<title>myerman: @andyhunter @cesart it's the pulvinar that gets you in trouble...
every time!</title>
<description>myerman: @andyhunter @cesart
it's the pulvinar that gets you in trouble...
every time!</description>
<pubDate>Thu, 29 Jan 2009 16:44:30 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1158923928</guid>
<link>http://twitter.com/myerman/statuses/1158923928</link>
</item>
<item>
<title>myerman: Create a manga avatar of yourself. http://www.faceyourmanga.com
</title>
<description>myerman: Create a manga avatar of yourself. http://www.faceyourmanga.com
</description>
<pubDate>Thu, 29 Jan 2009 16:43:55 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1158922223</guid>
<link>http://twitter.com/myerman/statuses/1158922223</link>
</item>
<item>
<title>myerman: Zombies ahead on Lamar & 15th....silly hackers!
http://tinyurl.com/c2s3nw</title>
<description>myerman: Zombies ahead on Lamar & 15th....silly hackers!
http://tinyurl.com/c2s3nw</description>
<pubDate>Thu, 29 Jan 2009 13:21:24 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1158382096</guid>
<link>http://twitter.com/myerman/statuses/1158382096</link>
</item>
<item>
<title>myerman: Obama's Mac: http://tinyurl.com/b4hsza</title>
<description>myerman: Obama's Mac: http://tinyurl.com/b4hsza
</description>
<pubDate>Thu, 29 Jan 2009 13:17:58 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1158375012</guid>
<link>http://twitter.com/myerman/statuses/1158375012</link>
</item>
<item>
<title>myerman: OK, looks like I'll be
speaking on Saturday at SxSW 2009. More details
for the freelancer in your life: http://tinyurl.com/df8my9</title>
<description>myerman: OK, looks like I'll be speaking on Saturday at SxSW 2009.
More details for the freelancer in your life: http://tinyurl.com/df8my9</description>
<pubDate>Wed, 28 Jan 2009 22:39:29 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1156744158</guid>
<link>http://twitter.com/myerman/statuses/1156744158</link>
</item>
...snip
</channel>
</rss>
Há um porém: não se deve simplesmente chamara essa função repetidamente até atingir o limite da taxa. Em vez disso, deve-se controlar um pouco os pedidos.
Pode-se fazer algo bem inteligente com o método rateLimitStatus() e algum armazenamento em cache rolado do início para obter um efeito de armazenamento em cache local.
O método rateLimitStatus(), mostrado na Lista 7, é um pedido simples que permite verificar se atingiu seu limite de taxa por hora e, não, antes que pergunte, verificar o status do limite da taxa não conta para seu limite. Tudo que precisa ser feito é fornecer um formato e a função faz o resto.
Lista 4. rateLimitStatus()
include_once("twitter.lib.php");
$user = "your-username";
$pw = "your-pw";
$twitter = new Twitter($user,$pw);
$status = $twitter->rateLimitStatus("xml");
echo $status;
Ao executar o método rateLimitStatus(), receberá o XML a seguir de volta.
Lista 5. rateLimitStatus()
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<hourly-limit type="integer">100</hourly-limit>
<reset-time type="datetime">2009-02-02T05:44:45+00:00</reset-time>
<reset-time-in-seconds type="integer">1233553485</reset-time-in-seconds>
<remaining-hits type="integer">99</remaining-hits>
</hash>
O que deseja é o valor dentro do nó remaining-hits. Se isso atingir cinco alguma vez (ou possivelmente 10), vá para seu feed RSS armazenado em cache em vez disso.
Com esse conjunto de nós XML disponível, tudo que precisa ser feito é carregar SimpleXML para simplesmente analisar o status do limite da taxa. É claro que se não estiver familiarizado com as excentricidades de XML, pode ser melhor analisar em JSON.
Executar o mesmo código usando o formato JSON resulta em uma instrução muito mais compacta:
{"remaining_hits":95,"hourly_limit":100,"reset_time":"Mon Feb 02 05:44:45 +0000 2009",
"reset_time_in_seconds":1233553485}
Poderia gastar algum tempo para dividir essa cadeia por vírgulas e, então, novamente por dois pontos para obter o valor de remaining_hits. Isso é bem simples, é claro. No entanto, se estiver executando PHP V5.2.0 ou superior, provavelmente já possui o método json_decode()disponível.
Conforme mostrado na Lista 9, tudo que precisa ser feito é usar essa função para obter o número remaining_hits e, então, usar uma instrução if simples para ver se esse número está perto de 10 ou se é inferior.
Se não estiver, retire o feed RSS do Twitter, mas salve-o em um arquivo para uso posterior. Se for inferior a 10, forneça o arquivo RSS salvo armazena em cache localmente.
Lista 6. json_decode()
include_once("twitter.lib.php");
$user = "your-username";
$pw = "your-password";
$twitter = new Twitter($user,$pw);
$status = $twitter->rateLimitStatus("json");
$fileName = $user.".rss";
$json_dump = json_decode($status);
$remaining = $json_dump->remaining_hits;
if ($remaining <= 10){
$fh = fopen($fileName, 'r');
$rssData = fread($fh, filesize($fileName));
fclose($fh);
echo $rssData;
}else{
$rss = $twitter->getUserTimeline("rss", $user);
//write to file
//in case we need it!
$fh = fopen($fileName,'w') or die("can't write to file");
fwrite($fh,$rss);
fclose($fh);
echo $rss;
}
Tudo que resta é dar a esse arquivo PHP um nome apropriado (por exemplo, twitterfeed.php) e usá-lo de forma apropriada oferecendo-o a seus usuários como outra opção de assinatura, alimentando um widget de barra lateral WordPress ou algo parecido.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Twitter / myerman</title>
<link>http://twitter.com/myerman</link>
<description>Twitter updates from Thomas Myer / myerman.</description>
<language>en-us</language>
<ttl>40</ttl>
<item>
<title>myerman: just got my copy of groundswell...also,
just got back from seeing Taken. Liam Neeson kicks butt!</title>
<description>myerman: just got my copy of groundswell...also, just got back from
seeing Taken. Liam Neeson kicks butt!</description>
<pubDate>Sun, 01 Feb 2009 04:16:55 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1166126064</guid>
<link>http://twitter.com/myerman/statuses/1166126064</link>
</item>
<item>
<title>myerman: For those of us trying to learn
Objective-C - some libraries. http://tinyurl.com/dkaj4m</title>
<description>myerman: For those of us trying to learn
Objective-C - some libraries. http://tinyurl.com/dkaj4m</description>
<pubDate>Fri, 30 Jan 2009 20:06:13 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1162686918</guid>
<link>http://twitter.com/myerman/statuses/1162686918</link>
</item>
<item>
<title>myerman: RT @andyhunter Google Chief Economist
on innovation: Weâre in the middle of .. a period of âcombinatorial innovation.â
http://bit.ly/xgpN</title>
<description>myerman: RT @andyhunter Google Chief Economist
on innovation: Weâre in the middle of .. a period of âcombinatorial innovation.â
http://bit.ly/xgpN</description>
<pubDate>Fri, 30 Jan 2009 15:35:18 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1161902779</guid>
<link>http://twitter.com/myerman/statuses/1161902779</link>
</item>
<item>
<title>myerman: A-Team movie out next year? I love it when a plan comes together.
http://tinyurl.com/ahckx9</title>
<description>myerman: A-Team movie out next
year? I love it when a plan comes together.
http://tinyurl.com/ahckx9</description>
<pubDate>Thu, 29 Jan 2009 19:21:34 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1159386717</guid>
<link>http://twitter.com/myerman/statuses/1159386717</link>
</item>
<item>
<title>myerman: @andyhunter @cesart it's the pulvinar that gets you in trouble...
every time!</title>
<description>myerman: @andyhunter @cesart
it's the pulvinar that gets you in trouble...
every time!</description>
<pubDate>Thu, 29 Jan 2009 16:44:30 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1158923928</guid>
<link>http://twitter.com/myerman/statuses/1158923928</link>
</item>
<item>
<title>myerman: Create a manga avatar of yourself. http://www.faceyourmanga.com
</title>
<description>myerman: Create a manga avatar of yourself. http://www.faceyourmanga.com
</description>
<pubDate>Thu, 29 Jan 2009 16:43:55 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1158922223</guid>
<link>http://twitter.com/myerman/statuses/1158922223</link>
</item>
<item>
<title>myerman: Zombies ahead on Lamar & 15th....silly hackers!
http://tinyurl.com/c2s3nw</title>
<description>myerman: Zombies ahead on Lamar & 15th....silly hackers!
http://tinyurl.com/c2s3nw</description>
<pubDate>Thu, 29 Jan 2009 13:21:24 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1158382096</guid>
<link>http://twitter.com/myerman/statuses/1158382096</link>
</item>
<item>
<title>myerman: Obama's Mac: http://tinyurl.com/b4hsza</title>
<description>myerman: Obama's Mac: http://tinyurl.com/b4hsza
</description>
<pubDate>Thu, 29 Jan 2009 13:17:58 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1158375012</guid>
<link>http://twitter.com/myerman/statuses/1158375012</link>
</item>
<item>
<title>myerman: OK, looks like I'll be
speaking on Saturday at SxSW 2009. More details
for the freelancer in your life: http://tinyurl.com/df8my9</title>
<description>myerman: OK, looks like I'll be speaking on Saturday at SxSW 2009.
More details for the freelancer in your life: http://tinyurl.com/df8my9</description>
<pubDate>Wed, 28 Jan 2009 22:39:29 +0000</pubDate>
<guid>http://twitter.com/myerman/statuses/1156744158</guid>
<link>http://twitter.com/myerman/statuses/1156744158</link>
</item>
...snip
</channel>
</rss>
Há um porém: não se deve simplesmente chamara essa função repetidamente até atingir o limite da taxa. Em vez disso, deve-se controlar um pouco os pedidos.
Pode-se fazer algo bem inteligente com o método rateLimitStatus() e algum armazenamento em cache rolado do início para obter um efeito de armazenamento em cache local.
O método rateLimitStatus(), mostrado na Lista 7, é um pedido simples que permite verificar se atingiu seu limite de taxa por hora e, não, antes que pergunte, verificar o status do limite da taxa não conta para seu limite. Tudo que precisa ser feito é fornecer um formato e a função faz o resto.
Lista 4. rateLimitStatus()
include_once("twitter.lib.php");
$user = "your-username";
$pw = "your-pw";
$twitter = new Twitter($user,$pw);
$status = $twitter->rateLimitStatus("xml");
echo $status;
Ao executar o método rateLimitStatus(), receberá o XML a seguir de volta.
Lista 5. rateLimitStatus()
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<hourly-limit type="integer">100</hourly-limit>
<reset-time type="datetime">2009-02-02T05:44:45+00:00</reset-time>
<reset-time-in-seconds type="integer">1233553485</reset-time-in-seconds>
<remaining-hits type="integer">99</remaining-hits>
</hash>
O que deseja é o valor dentro do nó remaining-hits. Se isso atingir cinco alguma vez (ou possivelmente 10), vá para seu feed RSS armazenado em cache em vez disso.
Com esse conjunto de nós XML disponível, tudo que precisa ser feito é carregar SimpleXML para simplesmente analisar o status do limite da taxa. É claro que se não estiver familiarizado com as excentricidades de XML, pode ser melhor analisar em JSON.
Executar o mesmo código usando o formato JSON resulta em uma instrução muito mais compacta:
{"remaining_hits":95,"hourly_limit":100,"reset_time":"Mon Feb 02 05:44:45 +0000 2009",
"reset_time_in_seconds":1233553485}
Poderia gastar algum tempo para dividir essa cadeia por vírgulas e, então, novamente por dois pontos para obter o valor de remaining_hits. Isso é bem simples, é claro. No entanto, se estiver executando PHP V5.2.0 ou superior, provavelmente já possui o método json_decode()disponível.
Conforme mostrado na Lista 9, tudo que precisa ser feito é usar essa função para obter o número remaining_hits e, então, usar uma instrução if simples para ver se esse número está perto de 10 ou se é inferior.
Se não estiver, retire o feed RSS do Twitter, mas salve-o em um arquivo para uso posterior. Se for inferior a 10, forneça o arquivo RSS salvo armazena em cache localmente.
Lista 6. json_decode()
include_once("twitter.lib.php");
$user = "your-username";
$pw = "your-password";
$twitter = new Twitter($user,$pw);
$status = $twitter->rateLimitStatus("json");
$fileName = $user.".rss";
$json_dump = json_decode($status);
$remaining = $json_dump->remaining_hits;
if ($remaining <= 10){
$fh = fopen($fileName, 'r');
$rssData = fread($fh, filesize($fileName));
fclose($fh);
echo $rssData;
}else{
$rss = $twitter->getUserTimeline("rss", $user);
//write to file
//in case we need it!
$fh = fopen($fileName,'w') or die("can't write to file");
fwrite($fh,$rss);
fclose($fh);
echo $rss;
}
Tudo que resta é dar a esse arquivo PHP um nome apropriado (por exemplo, twitterfeed.php) e usá-lo de forma apropriada oferecendo-o a seus usuários como outra opção de assinatura, alimentando um widget de barra lateral WordPress ou algo parecido.
Re: Metodos PHP
Gostei muito do codigo, apesar de um pouco grande,mais muito eficiente.
maria eduarda- Mensagens : 14
Data de inscrição : 02/09/2011
Localização : Trav. Dias Gomes 234, Candéal - Salvador-BA
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Qua 16 Nov - 16:14 por fernandosena
» Segurança e redes sem fio
Qua 16 Nov - 16:11 por fernandosena
» Nokia lançará tablet com Windows 8 em junho de 2012, diz executivo
Qua 16 Nov - 16:05 por fernandosena
» Empresa registra aumento de 472% no número de vírus para Android
Qua 16 Nov - 16:03 por fernandosena
» YouTube investe US$ 100 milhões em vídeos
Sex 7 Out - 8:34 por fernandosena
» Todos os títulos futuros da Microsoft devem trazer suporte para o Kinect
Sex 7 Out - 8:25 por fernandosena
» Resident Evil 5 - PC
Sex 7 Out - 8:22 por fernandosena
» Novo trailer de Assassin’s Creed Revelations é lançado
Sex 7 Out - 8:12 por fernandosena
» Biostar apresenta nova placa-mãe que permite acesso remoto via smartphones
Sex 7 Out - 8:08 por fernandosena