过期域名预定抢注

 找回密碼
 免费注册

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

  [複製鏈接]
發表於 2013-12-3 15:22:35 | 顯示全部樓層 |閱讀模式
通過wp-admin後台或者Windows Live Write發佈文章仍然麻煩,於是自己使用PHP程序直接將文章插入到網站數據庫中,這樣的話數據寫入速度要快N倍,適合大量文章發佈或多站同時維護。但WP程序的數據庫文章表wp-posts和Category關係表是分開的,有沒有這樣做過的,怎麼在插入文章的同時,選擇所屬的分類。. @% e: S& H+ [- G" r4 F
# f* x) \; Q4 a+ b, W7 E

  O, X: e: x; F* z4 s' r
發表於 2013-12-3 15:42:52 | 顯示全部樓層
在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID
, `0 g$ B3 }1 T0 v) o$ X& B; ]
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 15:47:50 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 15:50 編輯
% t- ^3 [; ]8 N) K. Y
mattfox 發表於 2013-12-3 15:42
5 y, F' r' O# J5 T  y/ h  f在wp_term_relationships表插入之前文章的ID(mysql_insert_id)以及類別ID
7 s- O$ G, G) B- G% K8 V  p. P
是的,要先讀取已發佈文章的ID,並且還要知道該ID代表文章所屬category,才能作此操作,量大之後挺麻煩的
; _# y& u2 d) [& X
" d! p& r3 n, X1 I9 |
8 @! J- z0 f) r8 q" ^6 p; B
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 17:01:07 | 顯示全部樓層
先讀取id,然後同時寫2條sql分別插入2個表,這個不難吧
4 \% n, w1 k. z$ _$ V+ J  n- s* R8 Y" V" X5 i- M9 a
你可以把寫好的代碼放上來,我幫你改6 W% u* n% T' w$ U1 l: H6 ~" P
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 19:23:03 | 顯示全部樓層
共享一下吧,最近好像也有這個需要.+ w1 e6 ]- l9 W# O
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 21:08:18 | 顯示全部樓層
同求一個啊,這個是主要功能速度會提高很多. D4 F! @. T8 M' X5 G
回復 给力 爆菊

使用道具 舉報

 樓主| 發表於 2013-12-3 21:33:57 | 顯示全部樓層
本帖最後由 Seanhere 於 2013-12-3 21:52 編輯 ' y; n! e/ o, R5 |, C
/ e2 N4 a6 @! _) T/ }# n, z6 g
這個方法是用來更新用來做外鏈的站群的,站群定期更新。由於站群量越來越大,更新一遍很費時間,但又不願買市場上的站群軟件。所以才想出了這種方法。
7 u1 a: ~- @3 f% o5 D7 G& g自己雖有一些編程基礎,但沒學過php,是邊查語法邊寫的,程序可能有些笨拙,高手不要見笑。
  1. <?php! B$ O! m" _% [6 _8 K$ Q
  2. //數據庫參數, z/ d& f( c. ?6 R' p0 {; P' g
  3. $dbuser='';
    # z) H' t' q* ]8 ^2 z
  4. $dbpwd='';  T* A6 c: E$ P; o
  5. $dbname='';
    & W; g3 o/ J0 f6 U! D3 e
  6. $dbhost=';1 A( [7 k. Z# o& c3 y; P+ L5 R
  7. $dbtable='';6 X6 w% |3 Q* v

  8. " Y$ _! k. W+ W* `( G3 V
  9. //設置讀取路徑6 J+ a. i' S* \& j
  10. $rdcontent='xxxx.txt';
    8 R" R9 [6 s$ ^2 l5 B7 k
  11. $rdtitle='xxxxtitle.txt';
    7 j' w2 J! e* Q; p% I$ A2 ?+ t3 y# ]: H
  12. $rdlink='xxxxlink.txt';
    - I: C, f; ~* d. @
  13.   L* R' H+ \4 [" E# V
  14. //讀取插入鏈接,並設置發佈概率8 Q, p- A! ]+ i6 i
  15. function gen_link($rdlink){: t7 K$ k! i/ A, F; j$ M
  16.         $data2 = file($rdlink);
    ' }# a9 b* K: A$ p& H
  17.         $num2 = count($data2);
    ) c- m+ Z( @/ d6 G2 N
  18.         $id2= mt_rand(0,$num2-1);
    : i' r( X5 J1 d7 g4 [+ _
  19.         $random= mt_rand(0,10);9 ~2 a& Y0 Y' N3 V! Q# c* F$ p
  20.         if($random<5)
    1 s4 N, m3 H) _( h0 K
  21.                 $link= trim($data2[$id2]);) r7 O! X3 H8 Z/ b& q* d8 J
  22.         else
    $ O! ^0 C& o, l
  23.                 $link="";
    ' B( `# b& T) I: `: j) r* `0 c
  24.         return $link;& q' \! k) Q2 y1 c) m# A. P. q
  25. }7 B' i, p# |5 n' x( r4 q& i
  26. $ p' b( s8 m* e/ E* ]5 S0 j
  27. //生成文章
    1 d1 [2 l+ `. h2 d" n3 \/ r
  28. $str = "";$ A6 l( N) ^8 F3 \. W' `' m
  29. $title = "";3 O7 Z. g* T) \0 K2 ]+ q0 U  M- N% K

  30. . x, j7 W& j2 l
  31. $data2 = file($rdtitle);
    : O' y" V' o' Z8 \' d- ]) I
  32. $num2 = count($data2);
    8 x' l$ M8 G8 I; A; p. G8 d
  33. $id2 = mt_rand(0,$num2-1);
      Y9 I. I9 T: R+ Y
  34. $title = $data2[$id2];  l0 i9 r* S# T% G$ E
  35. 2 _3 d- R+ F. @& b! E5 l2 H3 \
  36. $data = file($rdcontent);" R; {7 Q* [& s
  37. $num = count($data);
    5 B" k( g/ {, Y1 J4 k

  38. & j+ ?  z) @& r% I/ W
  39. for($i=0;$i<25;$i++){0 Y3 q6 c4 G: [- a" u& ^" x
  40.         $temp=" ";
    ; @+ z% y1 r6 v1 v* m, \" |& t% \
  41.         if(($i%5)==0)& }6 R4 Q3 m, L% K0 ?/ Z7 O
  42.                 $temp="3 T/ v% v6 K8 z
  43. \n";; \1 |  _8 t$ K" z% V+ g1 i
  44.         elseif(($i==7)|($i==21)){, n# G, a% k0 l5 {- @0 @% g# g
  45.                 $links=gen_link($rdlink);& m3 q3 F5 t9 v0 U1 [
  46.                 $str=$str." ".$links." ";3 X7 I( G! J% G& X
  47.         }8 Z: ]: v( J- z5 Z" O* Q
  48.         $id = mt_rand(0, $num-1);
    * {( u! I) |! F& h* \
  49.         $line = trim($data[$id]);
    7 n3 e( `6 U9 ?& s' o3 k
  50.         $str=$str.$temp.$line;
    / ]4 _, n2 D& b; I* B3 I. v/ F1 L
  51. }; `8 \  |7 A. p' [

  52. 2 D% a& @1 b) J& X* V4 {3 P
  53. //生成slug
    . o2 \3 N5 O5 ?$ Y: _
  54. function generate_slug($len){  L1 P. U1 ~. ^( y5 m
  55.         $chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    ) Q9 i) T/ J0 L% ]& i5 L, T' G
  56.         $slug="";
    5 [: j; n7 A& B) t4 v  W" K
  57.         for($j=0;$j<$len;$j++){
    , b, H. x: ^! L& A& X
  58.                 $slug .= $chars[ mt_rand(0, strlen($chars) - 1) ];" q! P( T; a1 x0 z& |: r6 @( a
  59.         }, e0 W% O+ z" ^8 `% w. w1 @
  60.         return $slug;5 n. X) X  L& R4 u, z
  61. }
    ! g, W/ q) X" J5 E  x
  62. $slug = generate_slug(17);1 J3 q* x9 X# m  ?/ ]( J
  63. 6 z$ I  ?9 Z3 t
  64. //獲取發佈時間9 \$ [7 j4 M. ]0 K' _
  65. $datetime= date("Y-m-d H:i:s");8 V/ D- e1 ]/ ]9 @" g9 ?% D

  66. - e8 d  ^( C7 q8 n5 i, e8 F* O
  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')";+ s' q& B* e2 H  ^4 w

  68. / s$ J' o0 f/ ]9 t/ F5 @
  69. //連接數據庫並處理數據+ V/ v6 Z( k, M$ n! o- v
  70. $con = mysql_connect($dbhost,$dbuser,$dbpwd);" R7 R2 r) J0 W* {2 U
  71. if(!$con){9 Q9 P3 D( X. d6 p2 x
  72.         die('Failed to connect to database! '.mysql_error());9 f  E0 G' I2 T# L# U4 h) b2 {7 T
  73. }else
    ; k  ?- j0 D3 c5 }8 W  h; c
  74.         echo "Suscess to connect to database!
    5 X- t5 S* |! m8 ?, R6 e1 |7 R
  75. \n";
    7 \$ A  T8 l2 Q" l

  76. 2 {, P* Z8 K! J- X5 _* x1 V
  77. mysql_select_db($dbname,$con);. J3 ~; e! [- ?1 l" q) N
  78. 8 _5 P; M& _9 D" G! G
  79. $result=mysql_query($sql);
    , S& I, L4 M" r- |" l" J1 _( k- v
  80. $ ~( a+ L* o5 t: [
  81. mysql_close($con);, m+ Q7 {1 c* o0 [& o7 ~
  82. # f/ D' {$ E+ `7 E5 @* U; Q
  83. if(!$result){( J; V3 L8 C# G% d4 O' T
  84.         echo $result;
    6 X; s: d; E( k
  85.         die('Failed to post article! '.mysql_error());
    / I- [# x4 f/ [0 b" E0 v
  86. }else8 p( p4 I8 F! l7 u% g" E! t; }7 x
  87.         echo "Suscess to post article!\n";! ^; W  \) g: R1 s* U/ D+ ^

  88. / O- @' E5 J) j  N
  89. echo $dbname." is done";
    2 C, U2 k0 N0 c2 {# ]4 {7 i2 A
  90. $ g' \7 y: y7 N% O# L
  91. ?>
複製代碼
文章插入到wp-posts表中,文章id自動生成,在插入時是未知的,所以就在插入文章的同時無法再將id 插入到wp_term_relationship , 這樣的結果是發佈的文章是無分類的。所以不太明白關於「讀取id」的方法,請指教。
( Y* A4 Z$ X$ Z+ {# [% b: S5 O- ]% H& @% n9 Q$ m1 |8 }: i
文章的slug我用了隨機生成的方法,其實最好的方法應該是用文章標題來轉化,但那樣麻煩些懶得費事。文章作者默認為1,就是管理員。文章內容我用了Yoo版的方法:http://www.advertcn.com/thread-12629-1-1.html。能保證原創性,但損失了可讀性,由於是做外鏈用的,應該關係不大。' Y* C& Q' H4 h8 U( V- w( M$ q7 Z

3 B2 h$ k: Q6 G2 ~8 R  c; v如果想將文件夾下的文章隨機發佈的話,可以先將文件夾內文件遍歷,然後隨機抽取發佈的方法。
5 R2 z/ G8 U. p! l+ x0 \7 n, f# K這樣做成php頁面,某站目錄下,使用VPS的Crontab 用curl語法定時向該url發出請求,就可自動發佈一篇文章,如果想要多篇的話,可以使用循環。
8 @! Z! i( g6 p8 M) U& k1 w
8 E) `: O. o! {6 J) w
6 J& d. B! D! r) Q" h
2 b% g1 L8 G. ~& O, s6 ^
2 j" s% w1 U9 N0 q# k* C# ?: P
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-3 22:37:54 | 顯示全部樓層
  1. 5 a6 Z  R* n$ p* Q' H, p# w
  2. <?php
    8 s9 r) K3 Q! N5 d9 {" `& M
  3. //數據庫參數
    + u8 H; J8 i6 B
  4. $$dbuser='';7 _1 F! x9 t3 x
  5. $$dbpwd='';
    : p8 \4 n, j" ]! [; q" t2 j
  6. $$dbname='';
    ) L9 ~5 {/ e2 E5 @1 a2 X6 I
  7. $$dbhost='';! {6 W$ S/ U% T* e% ^  H. Y
  8. $$dbtable='';
    ) ^7 r2 s* y4 h# B5 R2 d

  9. . b- z: D) F  S" d6 v3 K  r9 E
  10. //設置讀取路徑2 X0 `1 n" l. I) ]
  11. $$rdcontent='xxxx.txt';
    ( ~. v# E3 i& D- q3 N
  12. $$rdtitle='xxxxtitle.txt';8 f) ~1 I/ n2 q1 o  Y( @
  13. $$rdlink='xxxxlink.txt';( C5 v7 |  K: T4 U( F
  14. 9 o" @/ ~* j7 V. j% ]
  15. //讀取插入鏈接,並設置發佈概率
    9 @9 @& i( s# e, C& O2 c4 V
  16. function gen_link($$rdlink){& K) g6 B! ~2 ~$ J
  17.         $$data2 = file($$rdlink);3 \- d" D( f+ k/ A# m, L
  18.         $$num2 = count($$data2);
    : e+ X* z+ K1 R+ |* j5 z) `, d5 y, b
  19.         $$id2= mt_rand(0,$$num2-1);, J! f  \/ q, O( j: S, m( ?
  20.         $$random= mt_rand(0,10);
    % m! e/ ~" T0 S
  21.         if($$random<5)4 h" B1 I4 U7 r8 q
  22.                 $$link= trim($$data2[$$id2]);" Q( J4 S6 `2 F! m
  23.         else/ |& [8 t% c9 x% u
  24.                 $$link="";& l) a4 B1 d6 ~* U0 L
  25.         return $$link;
    ! \& Z! K- h5 E7 y) S9 r3 l
  26. }
    6 _. a2 w$ c& d. k. ?4 y

  27. 6 p& \. S/ y0 z' [1 ]; R
  28. //生成文章
    $ ]6 x" s9 t" f, r' E% o  {
  29. $$str = "";
    4 n/ A3 Q) |  `: J$ u; ?4 _9 Q
  30. $$title = "";
    , j( ?* E3 y3 }8 f# {& ~/ K% C

  31. 9 q7 q; U& e  x7 S  \2 a, C
  32. $$data2 = file($$rdtitle);/ W( K: Z6 K6 P! ?
  33. $$num2 = count($$data2);
    $ x; `$ K  Z5 d( p
  34. $$id2 = mt_rand(0,$$num2-1);5 x& _9 g2 E- h0 B
  35. $$title = $$data2[$$id2];7 U7 f, V% K  o1 N

  36. 9 O' S; ]) w0 \/ e0 K
  37. $$data = file($$rdcontent);
    $ a4 F  C; ]4 k
  38. $$num = count($$data);
    8 M: l- |" U3 w8 {  w/ d8 q# d- s
  39. ! f2 S* ^" t: L; O
  40. for($$i=0;$$i<25;$$i++){1 x# b! T' P: T: d9 s6 L
  41.         $$temp=" ";) W. |; m2 w, }8 ?+ l) s4 L
  42.         if(($$i%5)==0)' s' U# u( c9 P. J8 ^
  43.                 $$temp="
    & o& E3 m& z& m8 _5 c
  44. \n";
    & z* g" R! }+ }" X# Y2 F2 B3 @
  45.         elseif(($$i==7)|($$i==21)){; G* ]# W0 Q2 y, p4 `, W
  46.                 $$links=gen_link($$rdlink);
    + E, F" t% H8 ~
  47.                 $$str=$$str." ".$$links." ";: ~% @4 W0 Z+ f3 g
  48.         }2 U3 l' o5 `$ {
  49.         $$id = mt_rand(0, $$num-1);+ ?% ?6 j; O5 K7 i9 p
  50.         $$line = trim($$data[$$id]);. g) \  y( W% v+ z/ _& M# p
  51.         $$str=$$str.$$temp.$$line;3 Q2 `" x3 v8 C* I
  52. }
    4 ~  |. j# |9 Q$ J) X

  53. % I( _7 F! i5 M
  54. //生成slug8 ]4 u1 _6 U/ m
  55. function generate_slug($$len){7 y' }' i6 m( W9 w6 k
  56.         $$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';% C3 w: x+ R& X0 }# i( _
  57.         $$slug="";
    + G2 }4 l4 N( j/ H# R: a6 q) O7 W
  58.         for($$j=0;$$j<$$len;$$j++){
    + f4 [. j( d9 S4 K
  59.                 $$slug .= $$chars[ mt_rand(0, strlen($$chars) - 1) ];
    3 D5 R* L* `, o" T3 }1 S- j
  60.         }& c1 E9 m3 Y: ]" f- y4 U: m
  61.         return $$slug;
    . b. G( @* J, J
  62. }
    6 B3 y: H2 ?' x  F) R9 x( F
  63. $$slug = generate_slug(17);1 q7 @  ]) R# z" B

  64. / t9 I5 S) x. z2 P& e6 j  I) `
  65. //獲取發佈時間! C# i7 I; t3 c2 u
  66. $$datetime= date("Y-m-d H:i:s");: C0 ?+ w: ?: `$ r  }5 H2 J: M1 z) N  q( H
  67. ( i& I% [3 @" E9 d) p8 U% f
  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')";7 o! T, @2 o$ x0 g4 q8 {+ X
  69. : O9 O8 C8 D: z' a
  70. //連接數據庫並處理數據
      u' ~' @+ M( {, `4 C
  71. $$con = mysql_connect($$dbhost,$$dbuser,$$dbpwd);
    1 ~8 r0 ?: @/ s8 _
  72. if(!$$con){
    4 Q& ^- b. P- K4 |. t
  73.         die('Failed to connect to database! '.mysql_error());* z& \5 {  D  b
  74. }else
    4 C" _/ E% ]0 b/ F
  75.         echo "Suscess to connect to database!
    , [/ x& ]$ K7 f9 m/ T
  76. \n";
      i  _  K, P) R1 |; |3 w7 V
  77. 2 l6 m. \1 C) {/ e! L
  78. mysql_select_db($$dbname,$$con);. x7 |: |2 X4 D: A+ f; t) n" |- F# t
  79. 8 M0 ?/ S! i5 i' R2 P6 P( j/ b) C' H
  80. $$result=mysql_query($$sql);
    ! j! `2 o7 _, S- X. N2 ~# K, \

  81. ! U" I8 V- x; `2 H2 G
  82. 9 `) |( X7 z( G; u/ `0 `) |
  83. //前面已經插入,獲取插入id
    " K0 l. ]) Q/ E9 S7 }
  84. $$insert_id = mysql_insert_id();4 G' H( {9 O. @+ @' _' q5 v
  85. ) H% E8 o: u/ M
  86. //繼續插入wp_term_relationship表
    9 a1 G3 o: l. g) s8 |* L; `: K
  87. if($$insert_id > 0 ){7 k+ w3 u  a+ d4 {/ ^
  88.         $$sql= "INSERT INTO `$$dbtable` (`object_id`, `term_taxonomy_id`, `term_order`) VALUES (NULL, '$$insert_id', NULL)";# a( v) ~( ~6 h1 I3 p9 L3 m
  89. . I$ f1 P! @, d( A3 M+ u
  90.         $$result=mysql_query($$sql);
    9 F* l: H7 Z: a, n3 C$ R
  91. }3 V9 L% k2 O  q2 `% W; c
  92. //關閉數據庫連接( Q8 u" M* g! F  B/ o. j# H
  93. mysql_close($$con);
    ) F2 R$ c5 \& A$ V9 U" m
  94. ' w6 {/ b1 G% p9 j

  95. " o: [6 ^8 Z0 M' [4 w, R* v
  96. 5 Q; {* \" H+ z9 u* M
  97. if(!$$result){/ g7 B! q  u  ~0 @  W
  98.         echo $$result;$ i! R8 b6 C% ~+ a
  99.         die('Failed to post article! '.mysql_error());/ R, S& m3 [6 p' T1 h" v/ k
  100. }else
    8 o% r; @  r0 K0 q) Q
  101.         echo "Suscess to post article!\n";. W' g4 v) w  G9 f8 o

  102. ' L9 R: J0 N5 H: K- X) l
  103. echo $$dbname." is done";
    0 ]- v4 L" O" R) _
  104. # h' [. \9 k* G
  105. ?>5 d4 C0 N! O# N+ J  U( J
  106. , n, H1 w' f# l5 n% D+ y$ m  _' K
  107. $ w) `8 \6 v* k1 Q9 F1 w
  108. 2 m& t7 |! f4 d3 ^; f1 {, P

  109. 9 @2 G. q/ @- k) y' z; I
複製代碼
代碼給你改了下,wp_term_relationship表插入的值,你應該還需要改一下,因為我已經忘了這幾個表的關係了,剩下你的分享很好,我們一般使用付費cronjob,因為這種東西穩定性很重要,可以搜索setcronjob1 ^# U' P8 I, E" S6 z6 c' }8 r

5 G. e3 s' Y7 x+ T# I1 s: [( @# ?( K- F' t
如果你需要第1次插入的某些值,你需要在if($insert_id > 0 )下面再增加一個select的查詢
9 B& f+ i. B7 ]2 v/ p前面既然都是插入的內容,那麼插入的內容事先就已經知道的,所以沒有必要做這個select查詢& }9 F' V9 f! D' E9 }$ E3 t
! D1 e& V4 X% h0 E; H

評分

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

查看全部評分

回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 08:41:01 | 顯示全部樓層
我之前是使用wp內容函數搞定的,效率比直接插sql慢些,但勝在穩定,基本不出問題
5 Q- A$ S2 p, y, r; D9 v
回復 给力 爆菊

使用道具 舉報

發表於 2013-12-4 09:32:15 | 顯示全部樓層
你可以分兩步來處理,先插入文章,再導出文章ID,更新目錄.
* G' z. n1 Q# x你可以查看mysql那幾個常用的指令。
8 E2 M% {/ d2 K" ^% p' E' Q1 B9 P! v) `- p" ?+ g
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

过期高净值品牌域名预定抢注

點基

GMT+8, 2025-11-29 15:30

By DZ X3.5

小黑屋

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