如何让服务器每次都检查一个站点?我如何 运行 服务器上的脚本?

How can I make the server check a site every time? How can I run a script on a server?

我正在构建一个 android 应用程序,它将产品 URL 作为用户输入并检查产品价格是否下降。当价格下降时,它会通过推送通知通知用户。

我有一些代码可以获取亚马逊上的产品价格。但是,我不确定如何从现在开始。

符合。对我来说,服务器只会托管文件,因此它可以在 Internet 上使用。我对吗?? 但我想要一个运行我的代码的服务器 - 它监视页面的任何更改。

下一步怎么办?

您需要为亚马逊答案编写解析器。 A并时不时向服务器发送请求。

public class TimeService extends Service {
public static final long NOTIFY_INTERVAL = 5*60 * 1000; // 5 min
private Handler mHandler = new Handler();
private Timer mTimer = null;

@Override
    public IBinder onBind(Intent intent) {
        return null;
    }
@Override
    public void onCreate() {
        if(mTimer != null) {
            mTimer.cancel();
        } else {
            mTimer = new Timer();
        }
        mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, NOTIFY_INTERVAL);
    }
class TimeDisplayTimerTask extends TimerTask {
@Override
        public void run() {
            // run on another thread
            mHandler.post(new Runnable() {
@Override
                public void run() {
                    // call request to amazon server
}
});
        }

来自 activity

的电话
startService(new Intent(this, TimeService.class));
register in manifest

<application
.... >
.....

<服务android:name=".TimeService"/>

}

如果你想 "monitor the price on Amazon" 那么你将不得不轮询(发送定期请求)到亚马逊。

您可以让应用程序完成所有工作(将代码放入检索亚马逊页面,解析价格等)但这会导致问题 if/when 页面更改,您想更改轮询频率等。它的优点是用户的设备可能不会被亚马逊切断为"bot"。

您应该在服务器上执行此操作,使用网络服务器本身进行轮询,而不是应用程序。服务器需要支持添加要检查的项目、通知用户然后删除项目。这比听起来复杂得多,亚马逊可能会关闭您的服务器,因为它本质上是一个 "bot" - 试图在没有 "shopping experience."

的情况下获取定价信息

有许多 Web 服务器支持在后台 运行ning 服务器进程来执行所有这些操作。您可以 运行 类似 Tomcat 的东西(由 Apache 提供)或购买一些东西。如果您不熟悉 Web 服务器或诸如 PHP/JSP 之类的东西,那么您还有很长的路要走...