过期域名预定抢注

 找回密碼
 免费注册

關於通過Mysql語句發佈文章選擇Category問題

  [複製鏈接]
發表於 2013-12-3 15:22:35 | 顯示全部樓層 |閱讀模式
通過wp-admin後台或者Windows Live Write發佈文章仍然麻煩,於是自己使用PHP程序直接將文章插入到網站數據庫中,這樣的話數據寫入速度要快N倍,適合大量文章發佈或多站同時維護。但WP程序的數據庫文章表wp-posts和Category關係表是分開的,有沒有這樣做過的,怎麼在插入文章的同時,選擇所屬的分類。: O0 M; g0 v% q8 Q* ?3 U7 W$ F3 N
& ?+ m; C6 U, g: Q
% Z( k8 L: \4 v' s5 y
發表於 2013-12-3 15:42:52 | 顯示全部樓層
在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID
( a! C) a, f% Z
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 15:47:50 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 15:50 編輯
* f$ y+ d0 f% w0 X
mattfox 發表於 2013-12-3 15:42
8 G+ I6 b  u) z8 `在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID
* t5 C/ X% J. h. g
是的,要先讀取已發佈文章的ID,並且還要知道該ID代表文章所屬category,才能作此操作,量大之後挺麻煩的
: U: R2 b7 ~2 k0 j. n7 h6 H8 ]
- A8 }, D( Y7 a8 H  M8 \0 U8 n0 i+ [# y4 P
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 17:01:07 | 顯示全部樓層
先讀取id,然後同時寫2條sql分別插入2個表,這個不難吧
, T: k4 v  e: y% t- c- {! S& _" e2 V$ f+ M  N! {+ x
你可以把寫好的代碼放上來,我幫你改
1 z8 z" {  `; L1 \
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 19:23:03 | 顯示全部樓層
共享一下吧,最近好像也有這個需要.4 O9 \1 j* ~# H  D/ D5 s
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 21:08:18 | 顯示全部樓層
同求一個啊,這個是主要功能速度會提高很多
2 o" W6 L- `3 y1 b4 Y  x
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 21:33:57 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 21:52 編輯
" l0 _( B- F: q& {( t$ K0 L2 \  E  L% R) _4 _  C
這個方法是用來更新用來做外鏈的站群的,站群定期更新。由於站群量越來越大,更新一遍很費時間,但又不願買市場上的站群軟件。所以才想出了這種方法。+ K) B0 i: ?. Z1 l0 u
自己雖有一些編程基礎,但沒學過php,是邊查語法邊寫的,程序可能有些笨拙,高手不要見笑。
  1. <?php
    ! |) ]' }% v& x
  2. //數據庫參數. E3 I% |, C7 ]8 `6 ]  K2 \. P# ^
  3. $dbuser='';7 r! J+ O+ l- p8 a% Q7 U$ V
  4. $dbpwd='';; H: }# i! U& i6 A$ D6 d$ ]
  5. $dbname='';) [4 k* O. F+ C/ M, `
  6. $dbhost=';. l/ @% \$ P+ P  k) {1 Z: R
  7. $dbtable='';) A+ I7 V" C6 ~* ?
  8. , h7 g: Y! X6 j" O/ o9 }
  9. //設置讀取路徑" U6 n9 x* @' b% m9 f0 Q
  10. $rdcontent='xxxx.txt';# j5 ^/ @. H5 D4 A  k/ T# X+ I9 |2 e
  11. $rdtitle='xxxxtitle.txt';
    ) g0 {4 G& k0 X- O
  12. $rdlink='xxxxlink.txt';1 f( _' O1 a3 A9 |
  13. : n' w' t' H- I. G# S
  14. //讀取插入鏈接,並設置發佈概率
    ) D- P% j4 ]: _3 k% b: s. N. Y
  15. function gen_link($rdlink){
    3 m5 G/ T2 S* R
  16.         $data2 = file($rdlink);4 x) W- A  [! w! }
  17.         $num2 = count($data2);
    8 d' m! r; |/ }) F  ?
  18.         $id2= mt_rand(0,$num2-1);
    / B. o1 ]9 R4 T4 ?/ m
  19.         $random= mt_rand(0,10);7 I8 D9 K  g* A$ e2 S
  20.         if($random<5)
    $ b, m3 Y1 v$ Z% W: E; v2 w
  21.                 $link= trim($data2[$id2]);
    * u. W5 j2 O7 S6 x- e5 M
  22.         else
    ! v3 s* s8 c! H  J7 z5 _1 ~& {
  23.                 $link="";
    ; R& p- {5 z& ]) e9 \0 U
  24.         return $link;
    ' _6 @' ?/ s4 h+ V3 q8 s" U( P: j& j
  25. }4 ^4 Y, t6 g+ o

  26. % f. A+ K0 Y- r8 k9 K
  27. //生成文章6 A; \" J; i4 ?- I( k/ J" I# ^
  28. $str = "";: j( g$ }" J# B9 d7 L; S
  29. $title = "";
    # A: y4 w* J2 T! `

  30. & I, A* E" V- k/ U
  31. $data2 = file($rdtitle);- w: F# x% x2 }$ e) B. l( G
  32. $num2 = count($data2);! V4 ~& _' E) h5 }7 s$ O! y
  33. $id2 = mt_rand(0,$num2-1);0 n8 S; O8 Y5 [, c* d
  34. $title = $data2[$id2];+ q2 s. I% \0 f
  35. 1 ~3 N2 j1 ?5 i! d+ ]& h. {
  36. $data = file($rdcontent);
    + T* d, p8 g: E# k5 B4 y5 @
  37. $num = count($data);. [' V6 t/ G- B  P  [  p% B

  38. ) l# R* E! a' X2 C* l7 p
  39. for($i=0;$i<25;$i++){
    3 K; H% Y( f( H9 q( o9 q* p% J
  40.         $temp=" ";
      y4 A0 D* ^" r& C2 e$ t3 q& @
  41.         if(($i%5)==0)
    ( C2 g$ y9 n) a( |& T
  42.                 $temp="
    ) v& _; L+ A9 s7 U7 b: \2 X
  43. \n";
    8 w! t6 A7 Y4 c; G
  44.         elseif(($i==7)|($i==21)){
    ! S/ u5 Q3 n- [# \9 V
  45.                 $links=gen_link($rdlink);& _  v5 X  v! h1 X
  46.                 $str=$str." ".$links." ";6 K) E  M2 Z- i3 x; ^$ O; e
  47.         }
    + U4 v# ~. `3 v$ V# \
  48.         $id = mt_rand(0, $num-1);
    - c. A$ T- }. c8 Q& {1 m; T
  49.         $line = trim($data[$id]);
    ' c! R* y; x: S
  50.         $str=$str.$temp.$line;
    & M7 w% C; d& Q' ]1 w
  51. }
    8 [: t& C$ g/ o# l" }6 e
  52. 0 |5 T( D/ X5 d# L( I
  53. //生成slug
    3 k) @& ]2 d& ~
  54. function generate_slug($len){$ m! A" @9 ]2 f  r# T1 }5 W
  55.         $chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    0 ~# m3 D! Z9 r+ k/ U5 Y8 Q
  56.         $slug="";
    4 _$ I. I0 `6 N
  57.         for($j=0;$j<$len;$j++){
    2 n  Z" g+ h' _+ r
  58.                 $slug .= $chars[ mt_rand(0, strlen($chars) - 1) ];2 H& g' V0 J3 F
  59.         }
    4 Z) J5 A2 G9 M; c2 A6 S, L2 j
  60.         return $slug;
    8 e! Q" V% ]3 y
  61. }0 g" |4 K/ J6 v9 P& T
  62. $slug = generate_slug(17);; c& l8 ]" h4 ]
  63. 3 r8 E7 e  G4 v' x5 d+ J8 i) h
  64. //獲取發佈時間7 M  t8 s4 F- }: D! H" m6 B. e
  65. $datetime= date("Y-m-d H:i:s");
    : p2 q2 ~: ]/ A8 @
  66. & E0 H6 N: Q$ R; Z- q9 L0 Y
  67. $sql= "INSERT INTO `$dbtable` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES (NULL, '1', '$datetime', '$datetime','$str','$title', '', 'publish', 'open', 'open', '', '$slug', '', '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', '0', '', '0', 'post', '', '0')";" n) m9 D1 Y- ^- R6 H

  68. ) C+ u9 r/ C7 }1 e) \; K! A8 C
  69. //連接數據庫並處理數據  s( X1 V4 Z% H: r) D( R
  70. $con = mysql_connect($dbhost,$dbuser,$dbpwd);7 \! [/ Q% ^3 G4 C0 _! n. \' ?
  71. if(!$con){  q! F9 h: _. ^2 R/ |) }, {) J
  72.         die('Failed to connect to database! '.mysql_error());
    1 Y3 L8 @1 H9 P' @& S+ L
  73. }else4 K. `: a) s8 q& p* F" R6 ?
  74.         echo "Suscess to connect to database!
    8 M- V6 s. x  B0 K4 D; o3 A
  75. \n";. H; R8 x* P' I3 t/ e1 @3 X
  76. 1 A- l" q6 E8 x, k4 L5 s3 |
  77. mysql_select_db($dbname,$con);+ G+ M: t) @1 B# V9 r

  78. 6 ~# F4 {, a/ M4 l( X5 W
  79. $result=mysql_query($sql);5 T% ?+ S# J* W' }$ ^7 p! x- d

  80. & J4 }8 ?, y# v8 v$ V8 g/ m- R
  81. mysql_close($con);. g8 {' a2 D5 A  Q
  82. 2 e1 M" U; [3 _6 a
  83. if(!$result){
    ; ~& E8 {* U8 I
  84.         echo $result;* ?  ?% z7 Y5 `" x0 |: ^8 l
  85.         die('Failed to post article! '.mysql_error());
    1 ]9 T2 t0 x4 A
  86. }else# b  [$ J# }0 u- S
  87.         echo "Suscess to post article!\n";# z7 B& \2 m5 q4 o% W

  88. 2 }6 y: v: w1 J- Q7 x  m' ]/ E5 H
  89. echo $dbname." is done";5 `, n( A1 A; K4 ?

  90. % ]$ Y2 ?( M  t( e
  91. ?>
複製代碼
文章插入到wp-posts表中,文章id自動生成,在插入時是未知的,所以就在插入文章的同時無法再將id 插入到wp_term_relationship , 這樣的結果是發佈的文章是無分類的。所以不太明白關於「讀取id」的方法,請指教。6 z3 _  v; T  ?0 A5 Y
& z3 O8 [* w" ~# t
文章的slug我用了隨機生成的方法,其實最好的方法應該是用文章標題來轉化,但那樣麻煩些懶得費事。文章作者默認為1,就是管理員。文章內容我用了Yoo版的方法:http://www.advertcn.com/thread-12629-1-1.html。能保證原創性,但損失了可讀性,由於是做外鏈用的,應該關係不大。! j; F0 @, w) a  @& J' p5 j; c( V

) Z" o' c& {; L  z8 J* I6 }如果想將文件夾下的文章隨機發佈的話,可以先將文件夾內文件遍歷,然後隨機抽取發佈的方法。9 m& k8 Z) B6 r7 P( C: j" g
這樣做成php頁面,某站目錄下,使用VPS的Crontab 用curl語法定時向該url發出請求,就可自動發佈一篇文章,如果想要多篇的話,可以使用循環。) h' m- _. M  Z# v

- ?) o/ d1 i! N$ Q$ Y+ N9 e) d5 D1 h. R# l

, B- C' k; o% x0 C! t- i+ T* H3 B6 s4 H
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 22:37:54 | 顯示全部樓層
  1. / @8 i+ D/ B5 v
  2. <?php
    - i) V- o0 Q' k7 P* H. B; H& r
  3. //數據庫參數: _2 E( G0 |6 ^  {, n! e% b
  4. $$dbuser='';
    : k6 @+ ~5 g" ?/ B( ?; X( l
  5. $$dbpwd='';. }2 a8 j3 z1 z# ~0 x$ }
  6. $$dbname='';
    ; _# H9 g# m7 O' J, L  U
  7. $$dbhost='';8 ^; \  P1 ]6 P
  8. $$dbtable='';
    # v5 R2 X& s- m) F" [! U; a
  9. & V/ N/ |5 j7 f; X, J* V  ~7 X* w, I
  10. //設置讀取路徑
    - i5 r8 @$ j) a) N: G3 E
  11. $$rdcontent='xxxx.txt';
    7 n8 p2 T  w1 w7 E* K
  12. $$rdtitle='xxxxtitle.txt';
    : ~2 D/ Q7 r; }0 z* c& d  c% W/ p- g
  13. $$rdlink='xxxxlink.txt';
    . n9 E1 a1 F6 {* H, f

  14. 3 r/ h2 O: _- m' B5 K) c: f
  15. //讀取插入鏈接,並設置發佈概率; m( k6 D5 r$ d4 O  z
  16. function gen_link($$rdlink){5 |( W. F2 R1 v* P- `( U
  17.         $$data2 = file($$rdlink);8 R! G8 E: S0 ^2 `, X+ e
  18.         $$num2 = count($$data2);2 p9 V1 t2 ?' q( S: s
  19.         $$id2= mt_rand(0,$$num2-1);
    % L# M9 C& V7 ?9 f4 @- V' Q
  20.         $$random= mt_rand(0,10);
    ! {! S# ]' f! g/ G
  21.         if($$random<5)
    9 k. \3 d5 w/ ]1 T
  22.                 $$link= trim($$data2[$$id2]);" p' z* C; b# d0 `) N
  23.         else/ X- m% a+ V- d' ?1 C
  24.                 $$link="";- W9 ^$ [. [, L4 K( M, ~# ~* y
  25.         return $$link;
    6 d4 L! ~0 P# E; }2 O
  26. }* g% |( Z1 U& ?! @

  27. * f6 m+ \# W1 {+ \( G' [) D8 j
  28. //生成文章
    5 ~$ T" A! {5 n* f# i6 V6 Z
  29. $$str = "";
    3 Y! b  M; K# F3 A+ |# H
  30. $$title = "";
    6 w. k+ l; G8 J' w

  31. - w7 W1 m& c$ S! a
  32. $$data2 = file($$rdtitle);; q: _- ]' k& I
  33. $$num2 = count($$data2);
    ! Q' E# l1 l6 O! G/ H' u
  34. $$id2 = mt_rand(0,$$num2-1);% v2 W; j- X. q0 v
  35. $$title = $$data2[$$id2];
    ! G; J3 b7 m1 Q! i% o( Y9 S# L
  36. - C$ r4 d4 t! U. ~6 z  R
  37. $$data = file($$rdcontent);
      f3 s% N3 a0 q. e7 I$ H
  38. $$num = count($$data);. s- N  K1 b( n5 \+ f
  39.   W* C* u2 s& j- ]! ~3 P
  40. for($$i=0;$$i<25;$$i++){
    8 t" d, o, P4 c, v2 O$ C2 t
  41.         $$temp=" ";# B" Z9 h$ [/ a, ~. i6 A, c
  42.         if(($$i%5)==0)
    ; q$ o$ P0 B9 z: F
  43.                 $$temp="
    ! }. f$ N. I( d2 u/ P
  44. \n";
    7 N$ b6 C# S7 X, I) a
  45.         elseif(($$i==7)|($$i==21)){
    7 }6 L, n: Q  H3 n% j' @6 v
  46.                 $$links=gen_link($$rdlink);
    " ]- S+ Y! Y  M* `
  47.                 $$str=$$str." ".$$links." ";
    & E. W# ]* d$ a1 y! H8 q) P- |
  48.         }: D# F% j, v( b  l/ O" ]* }4 {
  49.         $$id = mt_rand(0, $$num-1);3 c3 N; [* p. A! C7 p; v, w; e- B
  50.         $$line = trim($$data[$$id]);# y) R3 Q0 L; m6 \" L
  51.         $$str=$$str.$$temp.$$line;, g, d* l- F3 e1 M5 D: ?
  52. }# W4 u% u9 k9 M2 s5 P8 l

  53. 5 [7 t3 A' p  ^: |# J% \
  54. //生成slug! J& q7 o$ O/ x/ K! r
  55. function generate_slug($$len){2 j( e1 W, D- w2 h
  56.         $$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $ S! a1 w( Q) G' v8 z
  57.         $$slug="";
    ; E8 W* Z, Y6 V* A; C9 \9 c) Q1 \' z
  58.         for($$j=0;$$j<$$len;$$j++){. y9 \3 o) h0 s1 f3 R
  59.                 $$slug .= $$chars[ mt_rand(0, strlen($$chars) - 1) ];* s1 _+ _, O% n( S& f7 ?/ d2 z
  60.         }( ~3 Y* P: A" l1 ~9 c) s
  61.         return $$slug;
    , ?- y' p! z, B- N
  62. }7 @% |8 Q) ?$ e' _) N5 ?
  63. $$slug = generate_slug(17);0 i* {6 ]' D6 O1 v5 A+ x  s" b

  64. - g0 ~1 Q. t% `4 Z/ U( t" Y
  65. //獲取發佈時間
    % ~- X9 }5 f2 s" e) ~5 d" |) {
  66. $$datetime= date("Y-m-d H:i:s");
    $ d# q1 ~3 p% c1 B# e- f, V

  67. ; K) o& c4 r- R4 [' W: o* a% \
  68. $$sql= "INSERT INTO `$$dbtable` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES (NULL, '1', '$$datetime', '$$datetime','$$str','$$title', '', 'publish', 'open', 'open', '', '$$slug', '', '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', '0', '', '0', 'post', '', '0')";3 ]: z$ V% B  k9 J- P! Y

  69. ; `6 Z& P& k; j6 {4 X* Q. b
  70. //連接數據庫並處理數據
    " h  V- ?+ w2 a$ Q- p' y8 y
  71. $$con = mysql_connect($$dbhost,$$dbuser,$$dbpwd);& y" ]* j0 E4 N+ |  g) g
  72. if(!$$con){
    ) o9 N7 q- K! W) Z7 @
  73.         die('Failed to connect to database! '.mysql_error());
    . D& t: R! w- D- X( ?
  74. }else% r6 [; s8 @# t( C/ W  E
  75.         echo "Suscess to connect to database!
    ( Q& C! u: {! I, n
  76. \n";
      m; X1 v4 f* z+ a' p
  77. 4 r% d9 V$ i( z( H
  78. mysql_select_db($$dbname,$$con);1 ^/ m3 P: K) j/ ~

  79. 8 y, G/ F( f0 [6 ^; q
  80. $$result=mysql_query($$sql);
    : f( F9 N# `% u, L- n: h" I
  81. # p& d1 [6 s1 E& ^, h8 ~
  82. ' f& B5 |3 ~8 [
  83. //前面已經插入,獲取插入id
    - \9 B4 F/ ]: y) U3 `/ s+ c% x
  84. $$insert_id = mysql_insert_id();
    # }6 r7 }+ L! j5 u) s

  85. ; d0 b8 }1 `& f
  86. //繼續插入wp_term_relationship表
    , o9 M8 V' b+ A
  87. if($$insert_id > 0 ){
    8 N- w/ ~* s2 ~1 |7 S
  88.         $$sql= "INSERT INTO `$$dbtable` (`object_id`, `term_taxonomy_id`, `term_order`) VALUES (NULL, '$$insert_id', NULL)";
    4 P/ o4 U- y/ A$ f
  89. / c6 \  P/ m$ f
  90.         $$result=mysql_query($$sql);( o, c- |4 J  E- k1 I, b
  91. }/ ]$ L' Y/ q7 N# J
  92. //關閉數據庫連接
    ) |4 x2 x0 h. L/ s* l" a
  93. mysql_close($$con);. S$ C9 Q9 n. V9 h2 M

  94. " n2 l- C8 z  f; N

  95. ( r/ @9 ]3 w4 L* \9 g0 G0 L

  96. # \2 l$ D3 z- l! _8 _
  97. if(!$$result){
    " ^* r  j) f9 G, x9 `2 z' b
  98.         echo $$result;
    ) ^$ N4 q7 {0 v" K( |! E3 L
  99.         die('Failed to post article! '.mysql_error());2 J/ y* y( |8 @; b" s$ d
  100. }else
    9 R3 t1 |' R; F/ k6 n2 h% J
  101.         echo "Suscess to post article!\n";
      |. ^( h: I) j% a( b
  102. , E1 j3 E% c5 {) @% p# b  p
  103. echo $$dbname." is done";
    7 v* Y' ]- s% p1 S4 _: s4 G
  104. 3 f" a; A" ]5 o& g
  105. ?>. ~- H" Q- ]. }

  106. / B$ ]' \; F" E. K

  107. 5 p/ \5 k8 @* I& c7 O
  108. ' `- H! P: y% U  V5 [# A, V
  109. 6 T1 K( ^3 O. f7 P
複製代碼
代碼給你改了下,wp_term_relationship表插入的值,你應該還需要改一下,因為我已經忘了這幾個表的關係了,剩下你的分享很好,我們一般使用付費cronjob,因為這種東西穩定性很重要,可以搜索setcronjob
8 n: t- N3 }! X$ K3 m  D, G1 u/ _3 q, _4 k9 X; y( H( Q2 G2 p

7 R* p0 [: t' ^0 m- O# u如果你需要第1次插入的某些值,你需要在if($insert_id > 0 )下面再增加一個select的查詢! n, a& u4 H8 e9 B6 M1 F3 s6 I
前面既然都是插入的內容,那麼插入的內容事先就已經知道的,所以沒有必要做這個select查詢
1 S: [9 m( I2 h* `$ E8 R/ E. |0 O) s3 T' h, y3 c

評分

參與人數 1點點 +4 收起 理由
hudba + 4 admire;)

查看全部評分

回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 08:41:01 | 顯示全部樓層
我之前是使用wp內容函數搞定的,效率比直接插sql慢些,但勝在穩定,基本不出問題" V% N5 D* l& \
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 09:32:15 | 顯示全部樓層
你可以分兩步來處理,先插入文章,再導出文章ID,更新目錄.
! j; x  l/ Y9 S2 J- o你可以查看mysql那幾個常用的指令。; s/ X0 s+ o0 i" v
, x: r# y" a) }6 M5 T* F
回復 给力 爆菊

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 免费注册

本版積分規則

點基

GMT+8, 2026-8-10 12:01

By DZ X3.5

小黑屋

快速回復 返回頂部 返回列表