1. 程式人生 > >用Thinkphp寫的簡單程式在命令列執行(非 Thinkphp 下的cli模式 而是php下的命令模式)

用Thinkphp寫的簡單程式在命令列執行(非 Thinkphp 下的cli模式 而是php下的命令模式)

本來是打算用Thinkphp下的cli命令模式 執行程式的,但不知道哪裡出錯了,沒法跑起來 於是就有了下篇程式碼。

首先 用Thinkphp寫個簡單的程式,保證頁面上訪問輸出正常。

再在命令列 輸入 php index.php --start=1 --end=9 (--start=1 --end=9 引數的傳遞  這裡的--代表識別符號,)

下面是部分程式碼:

tp/Conf/config.php 配置資料庫相關資訊

<?php
return array(
//'配置項'=>'配置值'
   // 新增資料庫配置資訊
    'DB_TYPE'   => 'mysql', // 資料庫型別
    'DB_HOST'   => 'localhost', // 伺服器地址
    'DB_NAME'   => 'middleData', // 資料庫名
    'DB_USER'   => 'root', // 使用者名稱
    'DB_PWD'    => 'root', // 密碼
    'DB_PORT'   => 3306, // 埠
    'DB_PREFIX' => '', // 資料庫表字首
);
?>

tp/index.php 入口檔案的程式碼。

<?php
define('APP_DEBUG',TRUE);
//define('MODE_NAME','cli');
include './ThinkPHP/ThinkPHP.php';
//App::run();
?>

tp/Lib/Action/Index.Action.class.php 程式碼

<?php 
    class IndexAction extends Action {
      public function index(){
          $Enterprise_raw = M('Enterprise_raw'); // 例項化Data資料模型

          $argv=$_SERVER["argv"];
          //print_r($argc);
          $argc=$this->parseArgs($argv);
          
          $start=$argc[start];
          $end=$argc[end];
          
          $rawRecs=$Enterprise_raw->limit($start,$end)->select();
          
          $Enterprise = M('Enterprise'); // 例項化Data資料模型
          //echo $Enterprise_raw->getLastSql(); 
          $count = 0;
          echo "程式開始時間:".date("Y-m-d H:m:s",time())."<br/>";
          foreach($rawRecs as $rawRec){             
              $record=$Enterprise->where("name='".$rawRec['enterprise_name']."'")->select();
              switch ($rawRec['status']) {
                case 0:
                  if($record){
                    $this->updataRec($rawRec);
                    //echo '<br/>'.'update rec successuflly with : ' . $rawRec['enterprise_name'];
                  }else{
                    $this->insertRec($rawRec);
                    //echo '<br/>'.'insert rec successuflly with : ' . $rawRec['enterprise_name'];
                  }
                  $count += 1;
                  break;
                case 1:
                 
                  break;
                case 2:
                  
                  break;                                  
                default:
                  break;
              }
          }
          echo "已執行 ".$count." 條資料。";
          echo "程式結束時間:".date("Y-m-d H:m:s",time())."<br/>";
      }
        public function parseArgs($argv){
            array_shift($argv);
            $out = array();
            foreach ($argv as $arg){
                if (substr($arg,0,2) == '--'){
                    $eqPos = strpos($arg,'=');
                    if ($eqPos === false){
                        $key = substr($arg,2);
                        $out[$key] = isset($out[$key]) ? $out[$key] : true;
                    } else {
                        $key = substr($arg,2,$eqPos-2);
                        $out[$key] = substr($arg,$eqPos+1);
                    }
                } else if (substr($arg,0,1) == '-'){
                    if (substr($arg,2,1) == '='){
                        $key = substr($arg,1,1);
                        $out[$key] = substr($arg,3);
                    } else {
                        $chars = str_split(substr($arg,1));
                        foreach ($chars as $char){
                            $key = $char;
                            $out[$key] = isset($out[$key]) ? $out[$key] : true;
                        }
                    }
                } else {
                    $out[] = $arg;
                }
            }
            return $out;
        }
             .

             .

             .

             .

             .

             .
            (省略的程式碼)

    }
  ?>

至此Thinkphp程式碼結束。

然後在命令列輸出 php index.php --start=0 --end=9 程式就會自動執行index方法裡的相關程式碼了。

相關推薦

Thinkphp簡單程式命令執行( Thinkphp cli模式 而是php命令模式)

本來是打算用Thinkphp下的cli命令模式 執行程式的,但不知道哪裡出錯了,沒法跑起來 於是就有了下篇程式碼。 首先 用Thinkphp寫個簡單的程式,保證頁面上訪問輸出正常。 再在命令列 輸入 php index.php --start=1 --end=9 (--st

Linux命令執行.py指令碼報錯:import 未找到命令

在linux中直接通過vi編輯器寫了一個python指令碼檔案(裡面import了一些庫),然後在命令列中執行時報錯,說import未找到命令(其實就是找不到那些庫檔案),出現這個問題的原因是因為:在python指令碼檔案中沒有指定安裝python程式時的python路徑。解

IntelliJ 執行程式前設定執行引數,類似於命令執行時輸入執行引數

問題需求: 1.寫了一個方法,是把小寫字母轉換為大寫字母。 程式執行前沒有設定要轉換的引數,執行時隨使用者輸入資料,輸出。 程式如下所示: 2.找到Edit Configurations。兩種方法,如下圖所示: 3.在Program arguments 裡輸入你想輸入

Windows命令執行java專案(程式

由於需要,要在命令列裡執行java專案。首先電腦上得有jdk,這是必要的條件。其次,你就可以新建一個專案資料夾,比如叫做ShowTime,然後再新建一個src資料夾(只是方便管理,並不一定需要這樣),這時,就可以在裡面新建一個java檔案了。 import

Ubuntu命令執行C程式和C++程式

首先Ctrl + T 開啟一個終端,cd到你建立C/C++檔案的目錄下。 下面以建立 helloc.c 和 hellocpp.cpp 進行演示 vim helloc.c 按 i 進入插入操作,然後寫C程式碼: #include<stdio.h> int

演算法第四版程式命令執行注意要點:

將algs4.jar解壓得到的源程式中package edu…改為import edu.princeton.cs.algs4.*; 否則會提示無法載入主類 import numpy as np from DEIndividual import DEIndividual im

命令執行C++程式帶來的思考(C++學習筆記 26)

我的電腦是Win10 x64位,裝有編譯程式的軟體有CodeBlocks和Dev-C++。 我想用windows的cmd命令列來帶引數地進行編譯C++程式碼。但是網上說下載MinGw,但這個MinGw是幹什麼用的? 首先了解以下概念: IDE: 整合開發環境(IDE,Integr

怎麼命令執行.java檔案

第一步 假如在e盤裡有個資料夾名為Java,在Java資料夾裡有一個事先寫好的.java程式,如下: 第二步 開啟命令列視窗(Window+R),輸入cmd,點確定,如下: 第三步 轉到HelloWorld.java檔案所在的資料夾。 (1)檔案在E盤,首先輸入

命令執行php指令碼輸出亂碼

今天在windows平臺的cmd 或 shellpower 中,執行php指令碼,輸出中文會亂碼。 修改了登錄檔,也嘗試修改當前 頁碼 CHCP 65001 但是隻要一執行php指令碼,可能就會又出現 問題。 最終想到一個解決辦法,就是在php 腳本里執行 cmd 命令去修改當前 頁碼字符集

Android,java傳送intent,native c/c++傳送intent, am命令執行程式

先來看看google如何表述的:一個Intent就是要執行的操作的抽象描述,是Android裡很重要的,完成Android各個元件之間的通訊。例如:啟動一個Activity.Intent intent = new Intent();intent.setClassName("c

NetBeans Java程式專案打包 命令執行

將NetBeans中的Java專案打包 並用命令列執行 一、專案打包為jar包 1、Java專案      寫了一個簡單的程式      2、 專案構建       

命令執行hadoop例項wordcount程式

需要說明的有以下幾點。 1.如果wordcount程式不含層次,即沒有package 那麼使用如下命令: hadoop jar wordcount.jar WordCount2 /home/hadoop/input/20418.txt /home/hadoop/outp

在Windows命令執行java程式

1;前提以配置好環境了。jdk安裝完畢了。 2;先建立txt檔案,敲好程式碼;在這裡有個注意的地方,要注意你的txt是否顯示出來,如果沒有顯示出來那就是設定隱藏了檔案字尾名一定要顯示出來, 怎麼看是否隱藏字尾名; 敲程式碼; 3;更改檔名,(

eclipse遠端除錯命令執行的maven執行程式

有的時候,我們需要除錯命令列執行的maven執行程式。該怎麼辦呢? 我們知道eclipse本身可以執行遠端除錯,具體做法網上都有不少文章, 這裡不再多說。 現在的問題就是在maven在執行時,如何能讓eclipse遠端除錯正在執行的maven程式 maven在本身也是java程式,所以只

ubuntu開機自動執行Qt程式

    這裡介紹一種在ubuntu系統開機自動執行使用Qt編寫的程式的方法。首先要注意要自動執行Qt編的程式,不需要先開啟Qt,而是直接執行編譯好的與工程名同名的可執行檔案即可,比如我要執行的工程為QRDecode,則使用QtCreater編譯之後,在該工程目錄下有一個叫Q

windows防火牆命令詳解(程式啟用命令執行即可)

netsh firewall set portopening protocol = TCP port = 9998 name = ssssssssssssssssssssssss mode = ENABLE scope = SUBNET profile = CURRENT

命令執行java程式,將控制檯日誌儲存到指定檔案

有個程式。命令列啟動命令為 java -verbose sample.DesktopApp在控制檯看到列印日誌。 將日誌按照日期儲存到指定檔案中,以備查驗。關鍵點在於 2>&1 ,把控制檯異常重定向到標準輸出中。完整批處理如下: #!/bin/bash

Centos命令執行Java程式(引入外部Jar)

本文講的東西比較膚淺,高手們請路過,有不準確的地方,歡迎交流指正。 最近在windows下寫了一個java程式,需要拿到centos系統中執行,本人在虛擬機器上安裝了centos系統,鼓搗了半天,翻閱了一下資料,有些東西記錄一下,以便自己查閱,供有有興趣人蔘考。 首先,確

windows命令執行class檔案提示“找不到或者無法載入主類”

我的jdk是jdk1.8.0_121這個版本的,配置好環境變數之後,使用javac進行沒問題,但是java 檔名的時候就提示找不到或者無法載入主類 百度搜了好久,很多人都是告訴說需要配置好classpath環境變數,但是之前看到的教程上說的是6.0以上的版本不需要配置cla

本地終端命令執行Java程式(mac)

下載JDK 下載JDK 設定環境變數(mac) 建立(開啟)使用者環境配置檔案 # 進入使用者根路徑 cd ~ # -l:檢視許可權,-f:檢視所有檔案(包含隱藏檔案) ls -lf # 修改.