Tekrarlı PHP ile Siteden Veri Al

3 Cevap php

http://www.example.net erişirken, bir CSV dosyası bu site ile ilgili en güncel veriler ile indirilir. Ben güncel bilgi almak için saat esasına göre bir saat sitemde, http://www.example.com, erişimi http://www.example.net istiyorum.

Daha sonra önceki CSV dosyalardaki verilerin değişiklikleri karşılaştırmak için CSV dosyasında saklanan güncel bilgileri kullanmak istiyorum. Açıkçası saldırı en iyi planı herhangi bir yardım mutluluk duyacağız yani ne olacağını hiçbir fikrim yok. Ben sadece devam gerektiği genel hatları arıyorum, ama daha çok bilgi daha iyi.

PHP ve MySQL çözümler tercih edilmektedir yüzden arada, ben bir lamba paket kullanıyorum.

3 Cevap

Ben {curl ile CSV indirirken, bu işlemek için en kolay yolu (windows üzerinde iseniz ya da zamanlanmış görev) her saat çalışan bir cron iş var olacağını düşünüyorum ya [(2)]} (manual). Eğer CSV indirdiğiniz zaman size MySQL veritabanında yeni veri alabilirsiniz.

Kolayca yeni ve eski verileri ayırmak böylece CSV her satırda damgası çeşit olmalıdır.

Ayrıca XML işleme düz CSV sonra daha iyi olurdu.

Lütfen http://www.example.net gerçek zamanlı http://www.example.com ve güncelleme üzerinde bir webcoder oluşturmak için size olacağını kurulum için daha iyi bir yolu. Ama hem web sitelerine erişimi olması gerekir.

Kullandığınız işletim sistemine bağlı olarak, yeni CSV çekin ve eski bir kopyasını karşılaştırmak istiyorsunuz bir hizmet / app kadar tekme bir zamanlanmış görev (Windows) ya da bir cron işi (* nix) bakıyoruz.

Kesinlikle bir cron işi yol gitmek isteyeceksiniz. Sadece bir e-posta istiyorsanız ben size farklılıkları ile ne yapmak istediğinizi tam olarak emin değilim, ancak, burada bir potansiyel (ve basitleştirilmiş) seçeneği:

wget http://uri.com/file.txt && diff file.txt file_previous.txt | mail -s "Differences" your@email.com && mv file.txt file_previous.txt

Eğer çalışma alabilirsiniz görmek için (Ben bir * nix kutusunu kullanarak tahmin ediyorum) Komut satırından kendisi tarafından bu komutu deneyin. Oradan, ben size CSV dosyalarını kaydetmek istediğiniz dizinde bir kabuk dosyasına bu tasarruf sağlayacaktır.

cd /path/to/directory
vi process_csv.sh

Ve aşağıdaki ekleyin:

#!/bin/bash

cd /path/to/directory
wget http://uri.com/file.txt
diff file.txt file_previous.txt | mail -s "Differences" your@email.com
mv file.txt file_previous.txt

Kaydedin ve dosyayı kapatın. Yeni kabuk komut çalıştırılabilir yapmak:

chmod +x process_csv.sh

Oradan, cronjob rota soruşturma başlatmak. Bu sizin crontab dosyasını düzenleyebilirsiniz olmadığını görmek için kontrol etmek kadar kolay olabilir:

crontab -e

Şans ile, cronjob girin ve dosyayı kapatmak / kaydetmek mümkün olacak. Bu aşağıdaki gibi görünecektir:

01 * * * * /path/to/directory/process_csv.sh

Bunu yararlı bulacağını umuyorum.