Ben HTTP üzerinden CLI yerine bazı PHP komut dosyalarını çalıştırmak için çalışıyorum.

2 Cevap php

Ben RSS beslemeleri (RSSmesh) birlikte katılmak ve HTML (RSS2HTML) olarak görüntülemek FeedForAll bazı PHP betikleri kullanıyorum.

Oldukça yoğun olarak bu komut dosyalarını çalıştırmak niyetinde ve çıkan HTTP istekleri ve bant genişliği benim barındırma kotanızı istemiyorum, çünkü ben bir şemsiye PHP "toplu" script web barındırma sunucusu onları çalışan hareketli sürecinde am , ve (bu arada, bir Linux sunucu) cron üzerinden bu komut diyoruz.

İşte HTTP üzerinden (çalışma) numune isteği var:

http://www.mydomain.com/a/rss2htmlcore/rss2html2.php?XMLFILE=http://www.mydomain.com/a/myapp/xmlcache/feed.xml&TEMPLATE=template.html

Bu istenen HTML çıktı üretecektir. Bu komut satırında çalışmak istiyorum nasıl bir örnek:

/srv/customers/mycustomer#/mydomain.com/www/a/rss2htmlcore/rss2html2-cli.php /srv/customers/mycustomer#/mydomain.com/www/a/myapp/xmlcache/feed.xml /srv/customers/mycustomer#/mydomain.com/www/a/template.html

Bu, doğru shebang hattı ile "rss2html2-cli.php" ilave edilir. Ben sadece de isteği yürütülebilir ("/ usr / local / bin / php") belirtebilirsiniz, ben sorun olmadan başka bir komut dosyası (kendimi yazdım) yolu ya da çalıştırmak mümkün çünkü bir fark yapar şüpheliyim.

Şimdi, RSS2HTML ve RSSmesh başlayanlar için, onlar ikincil dosyaları dahil, bu farklı - örneğin, hem bir XML ayrıştırıcı komut dahil - ve ben kafamda bir biraz alıyorum nerede bu olduğunu sanıyorum.

Şu anda kendimi çok gibi, "şemsiye" toplu iş komut dosyası () exec arıyorum:

exec("/srv/customers/mycustomer#/mydomain.com/www/a/rss2htmlcore/rss2html2-cli.php /srv/customers/mycustomer#/mydomain.com/www/a/myapp/xmlcache/feed.xml /srv/customers/mycustomer#/mydomain.com/www/a/template.html", $output)

Ancak hiçbir çıkış üretilmektedir. Ne bu konuda gitmek için en iyi yoldur ve "Sorunlar" aklımda ne tutmalı? Bu yaklaşım) doğru yolu (exec mı? Bu, diğer (basit) script çalışıyor ama kendi yazıyor çıktı. Bunun için çıktı almak ve şemsiye komut mümkünse içinde bir dosyaya yazmak istiyorum. Ben de ama boşuna çıktı tamponlama denedim.

Ben içerir ile ilgili özel bir şey dikkat etmek gerekiyor? Şimdi onlar include_once("FeedForAll_XMLParser.inc.php"); olarak komut belirtilen konum ve belirtilen dosyalar aynı klasörde gerçekten vardır.

Daha fazla bilgi:

-Bu bir Linux sunucu.

-Ben kabuk doğrudan erişimi var, bu yüzden bir komut satırında doğrudan şeyleri test edemez, her şey crontab üzerinden.

-Ben FeedForAll komut için bu destek arzulanan bir çok şey bırakıyor kabul edecektir, ama eğer ben bunları bilmek ve bir süre onları kullanıyorum çünkü, eğer mümkünse kendi komut kullanmaya devam etmek istiyorum. Ben SimplePie içine baktım, ama FFA komut bireysel yem başına öğe sayısını (RSSmesh) sınırlandırılması ya da açıklama uzunluğu (RSS2HTML) sınırlayıcı gibi SimplePie ile hiçbir belirgin çözümler gördüm, bazı şeyleri yapmak.

-Yahoo! Borular çok uzun benim uygulama için onların verileri önbelleğe, çıktı.


Eğer koduna bakmak istesin, here txt dosyaları gibi komut vardır. RSS2HTML2 ve RSSmesh FeedForAll komut vardır, FeedForAll_XMLParser ... dahil ayrıştırıcı. Ben "kazıyıcı-evrensel-rss-cli", CLI ile çalışıyor içinde var ancak ben henüz vb argv $ işlemek için bu değişiklik değil unutmayın.


Herkes bu konuda paylaşmak için herhangi bir düşünceleri varsa onu çok duyacağız. Şimdiden teşekkür ederim.

2 Cevap

Ben rss2html yılında $hideErrors = 0; satırı yardımcı olmadığını düşünüyorum. isset hataları görüntülenmesi gerekir olmadığını kontrol etmek için kullanılan bu yana bu açıklama gerekir. Sıfıra ayarlanarak 0'a değişken kümesi hala isset ile true değerlendirir beri hiçbir şey yapmaz.

Yeniden çalıştırmak ve sizin için bazı hatalara kadar atarsa ​​bakın.

Yerel web sunucusuna karşı isteği yayınlama wget ya da curl kullanın. CLI kullanmayın.