当前位置:Gxlcms > PHP教程 > php队列类消息队列thinkphp队列php队列处理高并

php队列类消息队列thinkphp队列php队列处理高并

时间:2021-07-01 10:21:17 帮助过:4人阅读

  1. <code><span><span><!--?php</span--><span>/**
  2. * PHP Class for queue
  3. *<span> @author</span> yangqijun@live.cn
  4. *<span> @copyright</span> DataFrog Beijingbei Ltd. 2011-07-25
  5. */</span><span><span>class</span><span>Queue</span> {</span><span>public</span><span>$length</span>=<span>12</span>; <span>//默认队列,相当于初始化队列</span><span>public</span><span>$queue</span> = <span>array</span>(); <span>// if String like this "22,23,24" convert to array to do queue </span><span>public</span><span>$delimiter</span>=<span>','</span>;
  6. <span><span>function</span><span>__construct</span><span>(<span>$queue</span>=array<span>()</span>)</span> {</span><span>$this</span>->queue=<span>$queue</span>;
  7. }
  8. <span>/**
  9. *<span> @desc</span> start queue
  10. *<span> @param</span> String $param new queue element
  11. */</span><span>public</span><span><span>function</span><span>run</span><span>(<span>$param</span>)</span> {</span><span>if</span>(!is_array(<span>$this</span>->queue)){
  12. <span>$this</span>->strToQue();<span>//将数组视为队列 </span>
  13. }
  14. <span>$currentlength</span>=<span>$this</span>->countqueue(); <span>//Count the queue length</span><span>echo</span><span>$currentlength</span>;
  15. <span>echo</span><span>$this</span>->length.<span>'<br>'</span>;
  16. <span>if</span>(<span>$currentlength</span><<span>$this</span>->length&&<span>$this</span>->length><span>0</span>) {
  17. <span>$this</span>->queAdd(<span>$param</span>);
  18. }<span>else</span><span>if</span>(<span>$this</span>->length==<span>0</span>) <span>//如果为空队列,则将队列初始化为输入的队列</span>
  19. {
  20. <span>$param</span>=<span>empty</span>(<span>$param</span>)?<span>0</span>:<span>$param</span>;
  21. <span>$this</span>->queue[]=<span>$param</span>;
  22. }
  23. <span>else</span> {
  24. <span>for</span> (<span>$i</span>=<span>0</span>;<span>$i</span><<span>$currentlength</span>-<span>$this</span>->length-<span>1</span>;<span>$i</span>++)<span>//队列比规定的队列多,要删掉队首的元素,才能入队</span>
  25. {
  26. <span>$this</span>->queRemove();
  27. }
  28. <span>$this</span>->queAdd(<span>$param</span>);
  29. }
  30. <span>return</span><span>$this</span>->queue;
  31. }
  32. <span>/**
  33. * String like this "22,23,24" convert to array to do queue
  34. *<span> @param</span> String $string
  35. *<span> @param</span> String $delimiter
  36. */</span><span>public</span><span><span>function</span><span>strToQue</span><span>()</span>{</span><span>if</span> (<span>empty</span>(<span>$this</span>->queue))
  37. {
  38. <span>$this</span>->queue=<span>array</span>();
  39. }
  40. <span>else</span> {
  41. <span>$this</span>->queue=explode(<span>$this</span>->delimiter,<span>$this</span>->queue);
  42. }
  43. }
  44. <span>/**
  45. * insert $node into queue
  46. *<span> @param</span> string $node
  47. */</span><span>private</span><span><span>function</span><span>queAdd</span><span>(<span>$node</span>)</span>{</span> array_push(<span>$this</span>->queue,<span>$node</span>);
  48. <span>$this</span>->countqueue();
  49. }
  50. <span>private</span><span><span>function</span><span>queRemove</span><span>()</span>{</span><span>$node</span> = array_shift(<span>$this</span>->queue);
  51. <span>$this</span>->countqueue();
  52. <span>return</span><span>$node</span>;
  53. }
  54. <span>private</span><span><span>function</span><span>countqueue</span><span>()</span>{</span><span>$currentlength</span>= count(<span>$this</span>->queue);
  55. <span>return</span><span>$currentlength</span>;
  56. }
  57. <span><span>function</span><span>__destruct</span><span>()</span> {</span><span>unset</span>(<span>$this</span>->queue);
  58. }
  59. }
  60. <span>//example </span><span>$str</span>=<span>'88|89|90|56|23|45|69|23|20|100'</span>;
  61. <span>$obj</span>=<span>new</span> Queue (<span>$str</span>);
  62. <span>$obj</span>->length=<span>8</span>; <span>// 队列元素长度 </span><span>$obj</span>->delimiter=<span>'|'</span>; <span>//如果队列是字符串,则元素直接的分隔符为| </span><span>$a</span>=<span>$obj</span>->run(<span>'91'</span>); <span>//要添加到队列中的元素 </span><span>$a</span>=<span>$obj</span>->run(<span>'92'</span>);
  63. <span>$a</span>=<span>$obj</span>->run(<span>'93'</span>);
  64. <span>$a</span>=<span>$obj</span>->run(<span>'94'</span>);
  65. print_r(<span>$a</span>);
  66. <span>?></span></span></span></code>

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了php 队列类,包括了php,队列方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

  • 人气教程排行